我有一个IInventory *的向量,并且正在使用C ++ 11范围遍历该列表,以便对每个对象进行处理。 在处理完一个东西之后,我可能想将其从列表中删除并删除该对象。我知道我可以随时调用delete指针进行清理,但是在范围for循环中将其从向量中删除的正确方法是什么?如果我从列表中删除它,我的循环是否将无效? std::vector<IInventory*> inv; inv.push_back(new Foo()); inv.push_back(new Bar()); for (IInventory* index : inv) { // Do some stuff // OK, I decided I need to remove this object from 'inv'... }
C ++ 11添加了一些新的字符串转换功能: http://en.cppreference.com/w/cpp/string/basic_string/stoul 它包括stoi(字符串到int),stol(字符串到long),stoll(字符串到long long),stoul(字符串到unsigned long),stoull(字符串到unsigned long long)。在没有stou(字符串到无符号)的情况下值得注意。是否有某些原因是不需要的,但所有其他原因都是? 相关:C ++ 11中没有“ sto {short,unsigned short}”函数吗?