c++ map 不返回 end() 即使它应该

标签 c++ memory-leaks dictionary segmentation-fault

在我的代码中,我有一个 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/

相关文章:

c# - 具有完整子结构的矩阵的 "Matrix decomposition"

c++ - 使用 stringstream 而不是 `sscanf` 来解析固定格式的字符串

arrays - Swift 数组字典、数据结构

c# - 调查 .net core linux kubernetes 容器内存泄漏的正确方法是什么

c++ - 遍历 taglib 属性映射

list - 根据元素索引修改列表的元素

c++ - 如何重新连接到不响应 close() 的服务器

使用 Windows Hook 的 C++ 自定义热键

iphone - UITableView 内存泄漏与 imageWithContentsOfFile

c++ - 如何从嵌套的 STL 容器中删除