小编Fab*_*ger的帖子

C++ 中非指针数组的删除

当我有一个像这样的数组时:

int* test = new int[50];
for (int i = 0; i < 50; i++)
{
    test[i] = dist4(rng);
}
Run Code Online (Sandbox Code Playgroud)

(填充随机数用于测试)

我可以这样释放内存:

delete[] test;
Run Code Online (Sandbox Code Playgroud)

但是当我像这样声明数组时:

int test[50];
for (int i = 0; i < 50; i++)
{
    test[i] = dist4(rng);
}
Run Code Online (Sandbox Code Playgroud)

我无法使用delete或delete[]释放内存。

这里释放内存的正确方法是什么?

“dist4”函数只是一个随机数生成器:

random_device dev;
mt19937 rng(dev());
uniform_int_distribution<mt19937::result_type> dist4(1,4); // distribution in range [1, 4]
Run Code Online (Sandbox Code Playgroud)

c++ arrays delete-operator

3
推荐指数
1
解决办法
245
查看次数

C++ 中的 if 语句不一致

所以我有一个简单的代码,在两种情况下表现不同

在第一种情况下,当我在(vecthread.size() - 5)if 语句内部编写它时,它将进入 if 语句,然后抛出错误“out_of_range”。尽管矢量是空的,他还是进去了。

vector<thread*> vecthread;
for (int i = 0; i < max; i++)
    {
        //int temp = vecthread.size() - 5;
        if((vecthread.size() - 5) > 0) {
           ...
        }
        thread* newThread = new thread(forj, max, mkg, x, &counter, &countermax);
        vecthread.push_back(newThread);
    }
Run Code Online (Sandbox Code Playgroud)

但是如果我temp像这样使用 int :

vector<thread*> vecthread;
for (int i = 0; i < max; i++)
    {
        int temp = vecthread.size() - 5;
        if(temp > 0) {
           ...
        }
        thread* newThread = new …
Run Code Online (Sandbox Code Playgroud)

c++

2
推荐指数
1
解决办法
100
查看次数

从队列中获取特定元素

我有一个队列: queue<string> saves. 我需要使用它的能力从前面删除元素。有没有办法获取队列中的特定元素(例如第 5 个元素)?
既不工作saves.at(4)也不saves[4]工作。

c++

1
推荐指数
1
解决办法
382
查看次数

标签 统计

c++ ×3

arrays ×1

delete-operator ×1