我的错在哪里?

时间:2014-02-27 06:44:05

标签: c++

我试过这段代码

#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分段错误”。

我不知道这个错误的含义。我的代码出了什么问题?

2 个答案:

答案 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的第一个元素。