我的问题如下。如何创建一个数组,其中包含在 const char * 中使用的所有字符,使该数组没有任何重复项。例如:
const char *pass = "Qqqqqqqwwwww11111"
应该创建一个数组
Q | q | w | 1
变量 pass 是由用户给出的,所以很难确定它会是什么样子。
最佳答案
许多解决方案之一是使用 std::sort
和 std::unique
。使用 std::string
(或 std::vector
,...)也更简单并且更安全。
#include <iostream>
#include <algorithm>
int main() {
char *pass = "Qqqqqqqwwwww11111"; // or by user input
// using std::string is easier and safer (works similarly with std::vector)
std::string data(pass);
// Remove duplicates with std::sort and std::unique
std::sort(data.begin(), data.end());
auto end = std::unique(data.begin(), data.end());
// Remove duplicates – if needed.
data.erase(end, data.end());
// Print the unique chars
std::cout << data << std::endl;
return 0;
}
根据您的操作,您可能不需要删除
data
的重复元素。在这种情况下,请记住 end
是第一个重复元素的迭代器(或者,如果数据一开始就没有重复项,则它等于 data.end()
).
注意:在使用 std::unique
之前,您绝对需要对数据进行排序。
关于c++ - 创建一个没有重复的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754090/