如果我希望它忽略重复的元素,使用哪个STL容器?

时间:2009-12-15 08:06:16

标签: 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(),以获得唯一字符串的总数。所以也许我甚至不需要一个容器,并且有更优雅的方式来做它?

1 个答案:

答案 0 :(得分:18)

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

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