我试过这段代码
#include <iostream>
#include <vector>
#include <string>
#include <iterator>
using namespace std;
class Tex
{
public:
int ii;
};
vector <Tex> tex;
vector <Tex>::iterator itexx;
int main()
{
Tex texx;
texx.ii = 9;
tex.push_back(texx);
cout << itexx->ii;
return 0;
}
当我运行此代码时,编译器会给我分段错误或者更确切地说是“程序收到的SIGSEGV分段错误”。
我不知道这个错误的含义。我的代码出了什么问题?
答案 0 :(得分:5)
itexx
是一个无效的迭代器。你需要做到这一点&#34;指向&#34;通过为其分配有效的迭代器来实现某些目的。例如,
itexx = tex.begin();
if (itexx != tex.end())
std::cout << itexx->ii;
答案 1 :(得分:1)
在cout << itexx->ii;
行上,您尝试取消引用itexx
,但您尚未将其分配给任何内容。
至少你需要做itexx = tex.begin();
应将itexx
指向向量tex
的第一个元素。