假设我有:
class Intersection {
public:
int street;
int avenue;
double x;
double y;
double green[2]; // Light green times for STREET & AVENUE
list <class Road_Segment *> adj;
double best_time;
class Road_Segment *backedge;
multimap <double, Intersection *>::iterator bfsq_ptr;
};
在我的主要功能中,我有一个二维 vector :
vector<vector<Intersection *> > vvin ;
vector<vector<Intersection *> >::iterator vvit ;
我正在这样访问它:
for (lit = City_Map::all.begin() ; lit != City_Map::all.end() ; lit++ ) {
inter = *lit ;
s = inter->street ;
a = inter->avenue ;
vvin[s][a] = inter ;
}
其中 lit 是一个包含所有类的列表迭代器。我在通过整数索引访问 2d vector 时遇到了困难,我知道我过去做过这样的事情。该程序在该行上出现段错误。有什么想法吗?
还有,甚至
cout << vvin[i][j] << endl ; // or for that matter[0][0] or [1][1] or whatever
段错误,所以我知道这不是指针分配问题。
如果我无法通过整数索引访问它,有没有办法以相同的方式使用迭代器,以便我可以像访问二维数组一样访问它?
请和谢谢。
最佳答案
您可能正在越界访问。尝试...
std::cout << "vvin.size() = " << vvin.size() << '\n';
for( size_t i = 0; i < vvin.size(); ++i )
{
std::cout << "vvin[" << i << "].size() = " << vvin[i].size() << '\n';
}
或者设置一些断点并以此方式检查 vector 。
关于c++ - 类的二维 vector ,如何引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8102216/