当我有一个像这样的数组时:
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) 所以我有一个简单的代码,在两种情况下表现不同
在第一种情况下,当我在(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) 我有一个队列:
queue<string> saves. 我需要使用它的能力从前面删除元素。有没有办法获取队列中的特定元素(例如第 5 个元素)?
既不工作saves.at(4)也不saves[4]工作。