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

Igo*_*Oks 4 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");
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我需要它只是为了调用string_XContainer.size()到最后,以获得唯一字符串的总数.所以也许我甚至不需要一个容器,而且有更优雅的方式呢?

Jef*_*ter 18

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

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

  • 优化之前的配置文件:如果std :: sort已经在已排序的数据集上具有O(N)行为(当然可能),则adjacent_find没有帮助. (2认同)