c++ - 如果我想让它忽略重复的元素,应该使用哪个 STL 容器?

标签 c++ stl set

我正在寻找一些 STL(但不是 boost)容器,在以下操作之后将包含 2 个元素:“abc”和“xyz”:

std::XContainer<string> string_XContainer;
string_XContainer.push_back("abc");
string_XContainer.push_back("abc");
string_XContainer.push_back("xyz");

顺便说一句,我需要它只是为了在最后调用 string_XContainer.size(),以获得唯一字符串的总数。所以也许我什至不需要容器,还有更优雅的方法吗?

最佳答案

std::set是你所追求的。一个集合最多包含每个元素的一个实例,根据您定义的某个比较器函数进行比较。

这是获取唯一字符串数量的一种方法。从您的示例中,字符串已经按排序顺序排列?如果是这种情况,那么您可以创建一个数组(或其他一些简单的结构)并使用 std::unique算法。

关于c++ - 如果我想让它忽略重复的元素,应该使用哪个 STL 容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905876/

相关文章:

c++ - 如何将十六进制转换为基数为10的字节

c++ - 如何将 void* 转换回 std::vector<float>

c++ STL vector 导致内存溢出?

c++ - 在 C++ 中使用比较器初始化集合

c++ - 基于数组的整数堆栈中的段错误和行为不当的数据成员

C++ - 程序退出时调试断言失败

python - Python 中的属性装饰器和设置函数

tags - 我为 aiml 设置的标签不起作用

c++ - 更简洁的模板化私有(private)静态常量成员变量特化

c++ - STL 队列推送行为