1

我不是 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;
}

有没有人有更好的解决方案?

4

2 回答 2

2

看起来您正在使用 C++11。虽然我不是 100% 确定这应该有效:

std::vector<coord> loc { {1, 10}, {2, 20}, {3, 30}, {4, 40}, {5, 50} };
于 2012-12-15T19:34:34.117 回答
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];
}
于 2012-12-15T19:35:29.160 回答