c++ - 类的二维 vector ,如何引用

标签 c++ algorithm vector iterator segmentation-fault

假设我有:

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/

相关文章:

c - 找到字符串 t 在字符串 s 中最右边出现的位置

python - 原始计算器 - 动态方法

vector - Vec<struct> 和 &[struct] 有什么区别?

matlab - 倍频程/Matlab : Extend a vector making it repeat itself?

Java Native Method,出错了

c++ - 在 OpenCV 中计算 ROI 内的对象区域

python - 如何让每个人都按喜好入座?

c++ - 如何在 OSX 上用 C++ 编写旋转光标?

c++ - 相当于 DirectX 渲染状态的 OpenGL

c++ - 线程内困难任务中的内存验证