gpt4 book ai didi

c++ - 从 c++ vector 中删除元素,其中删除条件取决于其他元素

转载 作者:行者123 更新时间:2023-11-30 02:05:43 27 4
gpt4 key购买 nike

在 C++ 中从 vector 中删除某些元素的标准方法是删除/删除习惯用法。但是,传递给 remove_if 的谓词仅将考虑中的 vector 元素作为参数。如果谓词以数组的其他元素为条件,是否有良好的 STL 方法来执行此操作?

举一个具体的例子,考虑删除紧随其后的数字的所有重复项。这里移除第n个元素的条件是以第(n-1)个元素为条件的。

之前:11234555111333
之后:1234513

最佳答案

对此有一个标准算法。 std::unique 将删除与它们之前的元素重复的元素(实际上,就像 remove_if 一样,它会重新组织容器,以便将要删除的元素聚集在结束)。

为简单起见,std::string 上的示例:

#include <string>
#include <iostream>
#include <algorithm>

int main()
{
std::string str = "11234555111333";
str.erase(std::unique(str.begin(), str.end()), str.end());
std::cout << str; // 1234513
}

关于c++ - 从 c++ vector 中删除元素,其中删除条件取决于其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9412434/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com