允许从std :: map的键中窃取资源吗?
在C ++中,可以从以后不再需要的映射中窃取资源了吗?更准确地说,假设我有一个std::mapwith std::string键,并且我想通过使用窃取maps键的资源来构造一个向量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 …