1

クラスがあるとします

class A {
   //...
};

struct B {
   explicit B(const A&);
   //...
};

A のコンテナーがあり、そこから B のコンテナーを作成したいと考えています。c++ 03でこれを行う慣用的な方法は何ですか?

試して失敗しました:

std::vector<A> source = fillSourceObjects();
std::vector<B> target;

// 1) won't compile; presumably I need a static helper function, 
//    but I would like to avoid that
std::transform(source.begin(), source.end(), std::back_inserter(target), B);
std::transform(source.begin(), source.end(), std::back_inserter(target), B::B);

// 2) won't compile; "... error: no match for 'operator=' in '* __result = *__first'
std::copy(source.begin(), source.end(), target.begin());
4

1 に答える 1

3

シーケンスを取得するコンストラクターを使用して、 s のAシーケンスを s のシーケンスに変換できます。Bstd::vector<T>

std::vector<B> target(source.begin(), source.end());
于 2013-09-27T20:11:52.653 に答える