gpt4 book ai didi

C++。删除额外的连续重复字符串的最有效方法?

转载 作者:行者123 更新时间:2023-11-28 07:20:05 24 4
gpt4 key购买 nike

有很多问题如何删除简单的重复字符串:

link

但我的问题与他们不同。

例如,如果我有条目 vector<string> :

{"111", "222", "222", "222", "333", "222"}

我需要得到以下结果:

{"111", "222", "333", "222"}

这意味着只删除附近的重复值。

我目前的临时解决方案是创建另一个 vector ,从入口 vector 中复制每个元素,并检查该元素是否不等于第二个 vector 的最后一个元素。

最佳答案

这是一个改编自 std::unique 页面的示例:

bool comp (std::string &i, std::string &j) {
return (i==j);
}

int main () {
std::string mys[] = {"111", "222", "222", "222", "333", "222"};
std::vector<std::string> myvector (mys,mys+6);
myvector.erase(std::unique (myvector.begin(), myvector.end(), comp), myvector.end());
return 0;
}

和原始代码的链接:

http://www.cplusplus.com/reference/algorithm/unique/

更新

正如评论中所建议的,您可以跳过比较器方法,但请记住,如果 vector 中的对象没有 == ,您可以使用它。我只放这个例子是因为它 100% 完整并且可以很容易地扩展到其他类型的对象。

更新 2

是的,你应该删除 vector 的最后一部分,因为正如文档所说,unique 方法将返回“一个指向应该被视为其新过去的元素的迭代器 - the -结束元素”

关于C++。删除额外的连续重复字符串的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19630463/

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