move
要素を別のコンテナに簡単に入れ替えることはできますか?
私は、次の操作を実行する(<algorithm>
を使用して)任意の簡単な方法を見つけることができませんでした:C++ 11リスト間の要素の移動(または他のコンテナ)
非コピー可能クラス
class NonCopyable {
public:
NonCopyable() {};
~NonCopyable() {};
NonCopyable(const NonCopyable&) = delete;
NonCopyable& operator=(const NonCopyable&) = delete;
NonCopyable(NonCopyable&& that) {}
};
移動操作:
std::list<NonCopyable> eList;
std::map<int, NonCopyable> eMap;
eList.push_back(NonCopyable());
// Move from list to map
{
auto e = std::move(eList.back());
eList.pop_back();
eMap.insert(std::make_pair(1, std::move(e)));
}
// Move from map to list
{
auto it = eMap.find(1);
if (it != eMap.end()) {
eList.push_back(std::move(it->second));
auto e = eMap.erase(it);
}
}
// Move all
// Iterate over map?...
私はstd::list::splice
を見て、それてきました私がlist
とmap
を持っていて、2つではありませんので、ここで私を助けませんlist
...
ありがとう
'std :: accumulate'は、' std :: pair 'と' NonCopyable'との間の変換を行い、その逆を行うことができますか? –
hudac
@hudac変換を実行するには、ラムダ関数を使用する必要があります。この例では、弦を結合するために累積が使用されています。あなたはおそらくそれを必要としません。 –