STL和vector是否提供排序选项?

Nar*_*uto 0 c++ sorting stl list vector

STL和Vector是否提供默认排序选项?

jal*_*alf 23

vector类不具有sort的功能.

但是有一个sort适用于所有迭代器范围.并且vector确实暴露了迭代器.

要对矢量进行排序vec:

#include <algorithm>

std::sort(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)

  • 并非所有容器 - 只有随机访问的容器.`list`有一个成员函数`sort`,有序的关联容器已经被排序,无序的关联容器不能被排序. (3认同)

Mew*_*ewp 11

是的,有sort()stl算法.你应该看看http://www.cplusplus.com/reference/algorithm/sort/

  • @Shadow:好的.例如:`std :: sort(vec.begin(),vec.end(),std :: greater <int>());`,参见`<algorithm>`和`<functional>` (6认同)

Sam*_*ler 6

你可能想要std :: sort.

#include <algorithm>
#include <vector>

int
main()
{
    std::vector<int> foo;

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

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

下面是使用两个boost库的类似示例.

#include <boost/assign/list_of.hpp>

#include <boost/foreach.hpp>

#include <algorithm>
#include <iostream>
#include <vector>

int
main()
{
    std::vector<int> foo = boost::assign::list_of(1)(4)(5)(10)(3)(2);

    std::cout << "unsorted" << std::endl;
    BOOST_FOREACH( const int i, foo ) {
        std::cout << i << std::endl;
    }

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

    std::cout << "sorted" << std::endl;
    BOOST_FOREACH( const int i, foo ) {
        std::cout << i << std::endl;
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为如果你坚持基础知识,你的代码示例会更好.要求读者熟悉两个不同的Boost库只是为了理解`std :: sort`示例可能有点问题. (15认同)