江苏神禹建设有限公司网站,建设部一建查询网站,百度关键词刷搜索量,网站内页优化vector中erase的作用是删除掉某个位置position或一段区域#xff08;begin, end)中的元素#xff0c;减少其size#xff0c;返回被删除元素下一个元素的位置。 vector中remove的作用是将范围内为val的值都remove到后面#xff0c;返回新的_last值#xff08;非val部分的en… vector中erase的作用是删除掉某个位置position或一段区域begin, end)中的元素减少其size返回被删除元素下一个元素的位置。 vector中remove的作用是将范围内为val的值都remove到后面返回新的_last值非val部分的end,但传入的原vector的end并没有发生改变因此size也就没有变化。
remove remove 函数通常用于从容器如数组、向量、列表等中删除指定值的元素。但是它不会改变容器的大小而是将要删除的元素移动到容器的末尾并返回一个指向新的逻辑末尾的迭代器。然后你可以使用容器的 erase 函数将这些元素从容器中删除。remove 可以用于序列式容器如数组、向量也可以用于关联式容器如集合、映射但是它的行为在关联式容器中可能会有所不同。
std::vectorint vec{1, 2, 3, 4, 5};
auto new_end std::remove(vec.begin(), vec.end(), 3);
vec.erase(new_end, vec.end());
// 此时 vec 变为 {1, 2, 4, 5}erase erase 函数用于从容器中删除指定位置或范围的元素并返回指向删除后的新位置的迭代器。它可以用于序列式容器和关联式容器其行为在不同容器类型上可能有所不同。
std::vectorint vec{1, 2, 3, 4, 5};
vec.erase(vec.begin() 2); // 删除第三个元素
// 此时 vec 变为 {1, 2, 4, 5}std::setint s{1, 2, 3, 4, 5};
s.erase(3); // 删除值为 3 的元素
// 此时 s 变为 {1, 2, 4, 5}1. erase大小变了 remove大小不变
2. erase返回值是下一个元素的迭代器remove返回一个指向新的逻辑末尾的迭代器
std::remove_if
std::remove_if 函数用于根据指定的条件删除容器中的元素。它将满足条件的元素移动到容器的末尾并返回一个指向新的逻辑末尾的迭代器。和 std::remove 一样它不会改变容器的大小你需要使用容器的 erase 函数来彻底删除这些移动到末尾的元素。 std::vectorint vec{1, 2, 3, 4, 5};
auto new_end std::remove_if(vec.begin(), vec.end(), [](int x) { return x % 2 0; });
vec.erase(new_end, vec.end());
// 此时 vec 变为 {1, 3, 5}