c++ Vector中如何显示数组元素

定义一个vector<int *> POSITION; 其中的元素是一个数组比如a[2],

a[0],a[1]的值在变化,目的是把每次变化的值压入vector中,即POSITION.push_back(a);
但最后输出结果
比如cout<<POSITION[i][0]时,不是压入的数组第i个元素,始终是最后压入的最后一个元素,这是怎么回事,问题出在哪里呢

vector<int *>这样vector里面的元素是指针,指向外面的空间,在这里所有元素指向a[]数组,它们共享空间。造成这种情况。
可以修改成:
class pos
{
public:
int x, y;

pos(int xx, int yy):x(xx),y(yy){}

};
vector<pos> Position;
这样压入新坐标时可以
Position.push_back( pos(2, 3));就压入一个新坐标(2,3)
Position[i].x来访问横坐标
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-12-05
c++中的vector元素需要用迭代器iterator来循环获取。
例子如下:
#include<stdio.h>
#include<vector>
#include <iostream>
using namespace std;
void main()
{
int i = 0;
std::vector<int> vor;
for(i = 0;i<10;i++)
{
vor.push_back(i); //把元素一个一个存入到vector中
}
for(std::vector<int>::iterator m = vor.begin(); m != vor.end(); m++ ) //用迭代器的方式输出容器对象的值
{
cout<<*m<<endl; //这里依次输出vector的值
}
}
第2个回答  2012-12-30
注意vector的元素是int *的指针,指向一个数组的第一个元素。
所以取值应该是:
指向数组的第一个元素:cout << *(POSITION[i]);
第二个元素:cout << *(POSITION[i] + 1);
以此类推。
vector的下一个元素是:POSITION[i+1]哦,也指向一个数组。
第3个回答  推荐于2016-02-25
压入的始终是数组a后首址,只有最后一人次的数值保存下来vector完全没用,每次总是保存同一个数值,可以定义vector<int[2]>试一下不行的话struct arr{int a[2];}然后vector<arr>试一下,vector<int*>不是那样用的!即是用来保存不同指针的!本回答被提问者采纳
相似回答