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个元素,始终是最后压入的最后一个元素,这是怎么回事,问题出在哪里呢 展开
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来访问横坐标
可以修改成:
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的值
}
}
例子如下:
#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的值
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
注意vector的元素是int *的指针,指向一个数组的第一个元素。
所以取值应该是:
指向数组的第一个元素:cout << *(POSITION[i]);
第二个元素:cout << *(POSITION[i] + 1);
以此类推。
vector的下一个元素是:POSITION[i+1]哦,也指向一个数组。
所以取值应该是:
指向数组的第一个元素:cout << *(POSITION[i]);
第二个元素:cout << *(POSITION[i] + 1);
以此类推。
vector的下一个元素是:POSITION[i+1]哦,也指向一个数组。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
压入的始终是数组a后首址,只有最后一人次的数值保存下来vector完全没用,每次总是保存同一个数值,可以定义vector<int[2]>试一下不行的话struct arr{int a[2];}然后vector<arr>试一下,vector<int*>不是那样用的!即是用来保存不同指针的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询