c++ - 创建一个没有重复的数组

标签 c++ arrays algorithm duplicates

我的问题如下。如何创建一个数组,其中包含在 const char * 中使用的所有字符,使该数组没有任何重复项。例如:

const char *pass = "Qqqqqqqwwwww11111" 

应该创建一个数组

Q  |  q  |  w  |  1

变量 pass 是由用户给出的,所以很难确定它会是什么样子。

最佳答案

许多解决方案之一是使用 std::sortstd::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 之前,您绝对需要对数据进行排序。

Here you can try this code .

关于c++ - 创建一个没有重复的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19754090/

相关文章:

c++ - 如何验证有效的屏幕分辨率(在 C/C++ 中)

javascript - 使用递归遍历数组数组

arrays - 如何从文本文件中获取字符串到批处理文件中的数组?

python - 从几乎随机的数据中找到最佳/接近最佳结果

c++ - 如何使用 boost::python 创建和使用 Python 对象的实例

c++ - 确定类是否实现 operator() 的任何方法

c++ - 获取 "gets"其他获取函数的函数

javascript - 为什么空 JavaScript 数组在条件结构中的计算结果为真?

algorithm - 找到二维空间中最远的两个点(曼哈顿距离)

python - 我在骑士之旅的 DFS 中缺少什么?