我正在使用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;
}
有谁能告诉我它为什么总是显示向量的最后一个元素?
答案 0 :(得分:2)
您的代码应该有效,至少根据您向我们展示的内容,但是:
typedef string Tab[1][1]
只有一个元素:Tab[0][0]
,Tab[0][1]
超出范围。例如,int tab[3]
包含以下3个元素:tab[0], tab[1], tab[2]
。 *itr++
)。首先,您的解除引用是不必要的,并且对迭代器的增量没有任何影响。其次,您应该以这样的方式递增迭代器:++itr
,因为itr++
创建itr
的冗余副本以便返回,然后只增加迭代器。