我一直试图冒泡排序vector<vector<string>> vvs
如果运行像
for ( auto x : vvs )
其中包含一行
if ( x.at(pos) == (*need next x position*).at(pos) {
//perform sort and swap if needed
}
是否可以获得基于范围的循环的下一个位置?
答案 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());
}