c ++使用冒泡排序自定义向量排序

时间:2015-07-02 22:24:58

标签: c++ sorting vector

我一直试图冒泡排序vector<vector<string>> vvs 如果运行像

这样的for循环

for ( auto x : vvs ) 其中包含一行

if ( x.at(pos) == (*need next x position*).at(pos) {
    //perform sort and swap if needed
}

是否可以获得基于范围的循环的下一个位置?

3 个答案:

答案 0 :(得分:1)

for (auto i : o)
    std::cout << i << std::endl;

基于for循环的范围仅用于对数组或向量中的每个元素进行排序,以用于循环使用的定制循环

for (unsigned i = 2; i != 10; ++i)
      std::cout << arr[i] << std::endl; 

答案 1 :(得分:1)

使用矢量时,只需使用std::list,它比手动操作更简单快捷,

std::list<std::string> vvs;

然后按顺序排列列表:

vvs.sort(compare_nocase);

按字母顺序排序列表,而不是特定于案例;

答案 2 :(得分:1)

或者,定义基于Bubble Sort的迭代器,如

template <class Iterator>
inline void BubbleSort(Iterator begin, Iterator end) {
    for (Iterator i = begin; i != end; ++i)
        for (Iterator j = begin; j < i; ++j)
            if (*i < *j)
                std::iter_swap(i, j);
}

申请你的载体

for (auto & v : vvs) {
    BubbleSort(v.begin(), v.end());
}