0

いくつかの構造体を STL リストに送信しようとしています。

struct obj {
  int a;
  int b;
}

list < struct obj> mylist;

struct obj a  = { 0, 1}; 
mylist.push_back ( a);

の引数を初期化する他の方法はありますpush_backか? 例えば:

mylist.push_back ( struct obj a ={0, 1});

g++ は私に言う:「構造体」の前に一次式が必要です。

4

2 に答える 2

4

でコンストラクターを定義しstruct objます。

obj::obj(int a, int b) // : initializers
{
 // Implementation
}

使用する

int val1, val2;
mylist.push_back(obj(val1, val2));

C++0x には、 inline を初期化する新しい方法があります。STL コンテナーを初期化できるというStroustrupからのステートメントを見std::initializer_list<T>たことがありTますobj

std::list mylist({obj(val1, val2), obj(val3, val4)});
于 2010-09-24T10:47:57.560 に答える
0

パラメータとして a と b を持つコンストラクタを構造体に与えてみませんか? 初期化子リストを使用する場合、これは古いコードと同じくらい高速である必要があり、次のように言うことができます

mylist.push_back(obj(a,b));
于 2010-09-24T10:48:32.057 に答える