std :: mapのキーからリソースを盗むことはできますか?
C ++では、後で不要になったマップからリソースを盗んでも大丈夫ですか?より正確には、std::mapwith std::stringキーがあり、をmap使用してsキーのリソースを盗むことでそれからベクターを構築したいと仮定しますstd::move。キーへのそのような書き込みアクセスは、内部データ構造(キーの順序)を破壊することに注意してください。ただし、map後で使用することはしません。 質問:問題なくこれを実行できますか?または、意図されていないmap方法でアクセスしたために、たとえばのデストラクタで予期しないバグが発生std::mapしますか? 以下はプログラム例です。 #include<map> #include<string> #include<vector> #include<iostream> using namespace std; int main(int argc, char *argv[]) { std::vector<std::pair<std::string,double>> v; { // new scope to make clear that m is not needed // after the resources were stolen std::map<std::string,double> m; m["aLongString"]=1.0; m["anotherLongString"]=2.0; // // now steal resources for (auto &p …