c++ - 使用 std::vector.erase(begin(), end()) 或 std::vector.erase(begin(), begin()) 安全吗?

标签 c++ stl

我想处理 vector 中的元素一段时间。为了优化这一点,我不想在处理项目时删除它,而是在最后删除所有已处理的项目。

vector<Item*>::iterator it;
for(it = items.begin(); it != items.end(); ++it)
{
    DoSomething(*it);

    if(TimeIsUp())
    {
        break;
    }
}

items.erase(items.begin(), it);

it == items.end() 时使用 erase 是否安全?在文档中说 erase() 将删除 [first,last) 并且这应该是安全的,但我想确定。

编辑:

使用 std::vector.erase(begin(), begin()) 安全吗?

最佳答案

是的,这是正确的 - 这就是符号 [first, last) 的意思,end() 指向末尾。

关于c++ - 使用 std::vector.erase(begin(), end()) 或 std::vector.erase(begin(), begin()) 安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918706/

相关文章:

c++ - c中 ""的确切返回值是什么?它是一个指针吗?

c++ - LoadLibrary 与将二进制 dll 加载到进程中?

c++ - 处理 utf-8 字符串 gtk

c++ - 如何在一个表达式中创建一个初始化 vector ?

c++ - map<string, string> 如何在这个 map 中插入数据?

c++ - vector<unique_ptr> 上的 is_copy_constructible 误报

c++ - 有什么方法可以更快地打印 2D Array 吗?

c++ - 如何使用 QStringList 显示 QMap 中的所有键?

派生类的c++ vector 仅调用一次构造函数

c++ - push_back 上的 STL 列表段错误