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

定义一个vector<int*>POSITION;其中的元素是一个数组比如a[2],a[0],a[1]的值在变化,目的是把每次变化的值压入vector中,即POSITIO... 定义一个vector<int *> POSITION; 其中的元素是一个数组比如a[2],

a[0],a[1]的值在变化,目的是把每次变化的值压入vector中,即POSITION.push_back(a);
但最后输出结果
比如cout<<POSITION[i][0]时,不是压入的数组第i个元素,始终是最后压入的最后一个元素,这是怎么回事,问题出在哪里呢
展开
 我来答
兔子和小强
推荐于2018-03-20 · TA获得超过6945个赞
知道大有可为答主
回答量:3332
采纳率:74%
帮助的人:1375万
展开全部
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来访问横坐标
千锋教育
2015-12-05 · 做真实的自己 用良心做教育
千锋教育
千锋教育专注HTML5大前端、JavaEE、Python、人工智能、UI&UE、云计算、全栈软件测试、大数据、物联网+嵌入式、Unity游戏开发、网络安全、互联网营销、Go语言等培训教育。
向TA提问
展开全部
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的值
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wanglixin1001
2012-12-30 · TA获得超过4173个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:846万
展开全部
注意vector的元素是int *的指针,指向一个数组的第一个元素。
所以取值应该是:
指向数组的第一个元素:cout << *(POSITION[i]);
第二个元素:cout << *(POSITION[i] + 1);
以此类推。
vector的下一个元素是:POSITION[i+1]哦,也指向一个数组。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
_whales
推荐于2016-02-25 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:485万
展开全部
压入的始终是数组a后首址,只有最后一人次的数值保存下来vector完全没用,每次总是保存同一个数值,可以定义vector<int[2]>试一下不行的话struct arr{int a[2];}然后vector<arr>试一下,vector<int*>不是那样用的!即是用来保存不同指针的!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式