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

1つのベクトルを埋めるためだけに2つのベクトルを作成して、何を達成しようとしていますか?2つの独立したベクトルを宣言して、1つの単一のベクトルに割り当てる場合、この方法は非効率的であり、面倒です。2つのベクトルを削除し、角かっこを使用してベクトルの値を設定します


= { {val1,val2} {val1,val2} {val1,val2} }

ただし、ベクトルの塗りつぶし方法に固執し、ベクトルを使用する必要がある場合は、aとbの両方の値を保持し、ループする1つのベクトルだけを使用します。

//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 に答える