c++ 如何构建一个std :: vector然后对它们进行排序?

我有一堆我需要排序的字符串。我认为std :: vector将是最简单的方法。但是,我从来没有使用过矢量,所以想要一些帮助。

我只需要用字母数字排序,没什么特别的。的确,string :: compare功能可以正常工作。

之后,我如何迭代通过它们来验证它们是否被排序?

这是我到目前为止

std::sort(data.begin(), data.end(), std::string::compare);

for(std::vector<std::string>::iterator i = data.begin(); i != data.end(); ++i)
{
    printf("%s\n", i.c_str);
}
你可以做

std::sort(data.begin(), data.end());

它会排序你的字符串。然后通过他们检查它们是否有序

if(names.empty())
    return true; // empty vector sorted correctly
for(std::vector<std::string>::iterator i=names.begin(), j=i+1; 
        j != names.end(); 
        ++i, ++j)
    if(*i > *j)
        return false;
return true; // sort verified

特别是,std :: string :: compare不能用作比较器,因为它不会做什么排序想要做的:如果第一个参数小于第二个参数,则返回true,否则返回false。如果你使用类似上面的类型,它将只使用运算符<这将完全正确(即std :: string使它返回first.compare(第二)< 0)。

http://stackoverflow.com/questions/688039/how-can-i-build-a-stdvectorstdstring-and-then-sort-them

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c++ 如何构建一个std :: vector然后对它们进行排序?