在我的代码中,我有一个 map ( tBoxes
) 与 vector<int>
开始 key 和set< pair<int,int> >
是值(value)。
由于某种原因,当我尝试访问 map 的特定空元素时,程序因段错误而崩溃。如果我通过 valgrind 运行程序,一切都很好(这就是我知道元素为空的方式)。此外,valgrind 没有说明任何内存泄漏。我使用的循环是一个天真的循环:
map<vector<int>,set<int, int> > tBoxes;
/*populate boxes*/
vector<int> t(3,0);
set<pair<int, int> >::iterator it;
for(int i = mini; i <= maxi; i++){
t[0] = i;
for (int j = minj; j <= maxj; j++){
t[1] = j;
for (int k = mink; k <= maxk; k++){
t[2] = k;
it = tBoxes[t].begin();
while (it != tBoxes[t].end()){
it++;
}
}
}
}
编辑:
由于我使用了奇怪的变量名称,因此代码不是我文件中的直接复制代码。
我怀疑这是 map 内存分配的问题,但我不知道如何解决。此外,该值为 set
而不是 vector
.
最佳答案
for (int k = mink; k <= maxj; k++){ // should'n it be maxk?
旧的“复制粘贴 for”错误 :D
编辑:Op 更改了代码并更正了我指出的内容,因此此答案不再有效...
关于c++ map 不返回 end() 即使它应该,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489734/