c – 删除数组中的重复字符串

我是c的新手,我正在寻找一种从字符串数组中删除重复字符串的方法,如下所示:
string exempleArray [] = {“string1”,“string2”,“string1”};
在代码之后,它应该如下所示:
“string1”,“string2”,
但顺序根本不重要.非常感谢你的时间.

解决方法:

如果顺序无关紧要,您可以先使用std :: sort对数组进行排序,然后使用std::unique删除重复项.

std::sort(std::begin(exampleArray), std::end(exampleArray));
auto it = std::unique(std::begin(exampleArray), std::end(exampleArray));

在这里,它指向一个新的,独特范围的结束.请注意,由于您使用固定大小的数组开始,因此无法将其大小减小为唯一元素的数量.您需要将元素复制到容器,该容器的大小可以在运行时确定.的std ::矢量< STD:字符串&GT是一个明显的候选人.

std::vector<std::string> unique_strings(std::begin(exampleArray), it);

请注意,如果您从std :: vector< std :: string>开始而不是固定大小的数组,您将能够避免复制并从原始向量中删除元素:

std::vector<std::string> strings = {"string1" "string2" "string1"};
std::sort(strings);
auto it = std::unique(std::begin(strings), std::end(strings));
strings.erase(it, strings.end());
上一篇:mysql – ON DUPLICATE KEY UPDATE导致外键约束错误


下一篇:【Golang】LeetCode442Find All Duplicates in an Array