迭代器总是指向最后一个元素

时间:2014-06-29 01:03:11

标签: c++ pointers vector iterator

我正在使用C ++编写程序,当我尝试列出我的矢量元素时,它总是显示最后一个元素。

这是我的代码:

typedef string Tab[1][1]; 
struct Node
{
  Tab t1;
};

以下是我列出元素的方法:

std::vector<Node*>::iterator itr;

for(itr = Tab_dynamique.begin(); itr != Tab_dynamique.end(); *itr++)
{
  cout << (*itr)->t1[0][0] << " | " << (*itr)->t1[0][1]<< endl;
}

有谁能告诉我它为什么总是显示向量的最后一个元素?

1 个答案:

答案 0 :(得分:2)

您的代码应该有效,至少根据您向我们展示的内容,但是:

  1. 您的数组typedef string Tab[1][1]只有一个元素:Tab[0][0]Tab[0][1]超出范围。例如,int tab[3]包含以下3个元素:tab[0], tab[1], tab[2]
  2. 你不应该像你那样增加迭代器(*itr++)。首先,您的解除引用是不必要的,并且对迭代器的增量没有任何影响。其次,您应该以这样的方式递增迭代器:++itr,因为itr++创建itr的冗余副本以便返回,然后只增加迭代器。