【发布时间】:2013-06-16 14:04:08
【问题描述】:
为什么会出现分段错误??
std::vector<std::vector<int> > cells;
std::vector<std::vector<int>::iterator> cellitr;
for(int i=0;i<10;i++)
{
std::vector<int> c;
std::vector<int>::iterator citr;
citr= c.begin();
for(int j=0;j<10;j++)
{
c.push_back(j);
}
cells.push_back(c);
cellitr.push_back(citr);
}
qDebug()<<cells[5][6];
int *x = &cells[5][6];
cells[5].insert(cellitr[5],200);//SEG FAULT HERE
qDebug()<<cells[5][6];
我有一个向量向量和迭代器向量,我正在尝试使用迭代器的索引在其中一个子向量中插入一个值。
有什么想法吗??
【问题讨论】:
-
您应该避免在这种情况下使用迭代器。它们太不稳定了。尝试保留索引。
-
但我需要在给定的索引中插入值而不仅仅是 push_back,如何在没有迭代器的情况下做到这一点?函数 insert 必须有一个迭代器作为输入
-
您可以使用
v.begin()+index为任何索引创建迭代器
标签: c++ vector segmentation-fault