gpt4 book ai didi

c++ - 如何从 vector 中删除元素?

转载 作者:行者123 更新时间:2023-11-28 00:10:51 27 4
gpt4 key购买 nike

我有一个 char 类型的 vector ;

vector<char> a_chars;

它包含 6 个字符,但其中 3 个是重复的。如何删除重复的字符?这是我当前的代码,它没有编译:

for(int i = 0; i < a_chars.size(); i++)
{
char current = a_chars.at(i);
for(int j = i+1; j < a_chars.size(); j++)
{
if (current == a_chars.at(j))
{
a_chars.erase[j];
}
}
}

这里是编译错误:“C:数组下标的无效类型‘[int]’|”

编辑:我也尝试过 a_chars.erase(j)a_chars.erase(a_chars.at(j) 并且仍然有编译错误。

最佳答案

您可以将 std::uniquevector::erase 方法(称为 erase-remove idiom)结合使用。但是,必须对 vector 进行排序。

vector<char> a_chars;
std::sort(a_chars.begin(), a_chars.end());
a_chars.erase(std::unique(a_chars.begin(), a_chars.end()), a_chars.end());

如果您不想对您的vector 进行排序。您可以使用以下代码段删除重复项。

void remove_duplicities(std::vector<char>& vec)
{
for (auto iter = vec.begin(); iter != vec.end(); ++iter)
{
for (auto jter = std::next(iter); jter != vec.end(); ++jter)
{
if (*iter == *jter)
jter = std::prev(vec.erase(jter));
}
}
}

关于c++ - 如何从 vector<char> 中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201232/

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