我不是C ++方面的专家,但我相信这不是最优雅的解决方案:
#include <iostream>
#include <vector>
struct coord {
int x;
int y;
};
int main()
{ std::vector<int> a {1,2,3,4,5};
std::vector<int> b {10,20,30,40,50};
int i;
std::vector<coord> loc (5);
for (i=0;i<5;i++)
{ loc[i].x = a[i];
loc[i].y = b[i];
}
return 0;
}
有没有人有更好的解决方案?
答案 0 :(得分:2)
看起来你正在使用C ++ 11。虽然我不是100%肯定这应该有效:
std::vector<coord> loc { {1, 10}, {2, 20}, {3, 30}, {4, 40}, {5, 50} };
答案 1 :(得分:0)
你想通过创建两个向量来填充一个向量来实现什么?当声明两个独立的向量分配到一个单一的向量时,你的方法是低效的,而且也很麻烦。删除两个向量并使用括号
设置向量的值 = { {val1,val2} {val1,val2} {val1,val2} }
但是,如果您想坚持使用矢量填充方法并且必须使用矢量,那么只需要一个矢量同时包含a和b的值以及循环
//check to make sure size is even
for(int i = 0; i < vect.size(); i +=2)
{
vect[i].x = a[i];
vect[i].y = a[i+1];
}