小编Dem*_*ion的帖子

出现 std::vector 错误:“无法将向量增加到末尾”,同时想要擦除特定元素

我有一个类向量,该类有一个字符串名称,以及其他私有字段。

我想实现一个void delete(string name)函数,它根据字符串查找元素(向量中的每个类都有一个唯一的名称)。

但是经过简单的测试,它给了我一个错误“不能增加到最后”。

这是我的功能:

void delete_member(string member_name)
{
    int count = 0;

    for (auto it = member_list.begin(); it != member_list.end(); ++it, ++count)
        if (it->get_name() == member_name)
            member_list.erase(member_list.begin() + count);
}
Run Code Online (Sandbox Code Playgroud)

就我搜索的答案而言,似乎迭代器不应该超过向量的 .end() 。

这里的缺陷是什么?我使用相同的循环来迭代 add_member(Member m) 函数的向量,该函数完全正常

c++ vector stdvector c++11

-1
推荐指数
1
解决办法
123
查看次数

标签 统计

c++ ×1

c++11 ×1

stdvector ×1

vector ×1