在C ++中对向量进行向量排序

Step Verner

我有以下数据结构:

std::vector<std::pair <std::vector<unsigned>,std::vector<unsigned> > > A;

包含以下数据:

((7),(108,109)),
((3),(100,101)),
((9),(111,112)),
((5),(102,103)),
((8),(110)),
((8,2,10),(189)),
((5,7),(121)),
((3,9),(119)),
((10),(114)),
((3,5),(115)),
((3,7),(118)),
((3,10),(120)),
((3,4,5),(122))

现在,我想按以下方式仅对A向量对中的第一个向量进行排序。例如,我的A向量对中的第一个向量是:

(7),
(3),
(9),
(5),
(8),
(8,2,10),
(5,7),
(3,9),
(10),
(3,5),
(3,7),
(3,10),
(3,4,5)

我想根据第一个向量对A进行排序,以便在最终排序之后,我的向量变为:

((3),(100,101)),
((5),(102,103)),
((7),(108,109)),
((8),(110)),
((9),(111,112)),
((10),(114)),
((3,5),(115)),
((3,7),(118)),
((3,9),(119)),
((3,10),(120)),
((5,7),(121)),
((3,4,5),(122)),
**((2,8,10),(189)).**

我知道如何使用std:sort对向量进行排序,但是我不确定如何使用标准c ++函数对向量进行排序。我尝试先按大小对它们进行排序,然后使用bublee sort进行最终排序。是否有其他方法可以使用标准库函数在c ++中对这些向量进行排序。我正在使用g ++编译器(g ++(Ubuntu / Linaro 4.6.3-1ubuntu5)4.6.3)在ubuntu 12.04上运行C ++。

Shauryachats

基本上,您想做的是:

  1. 首先排序第一的大小vectorpair<>
  2. 然后字典顺序进行排序vectors

为此,您必须编写自己的比较器函数。

代码:

bool mySort(const pair<vector<unsigned>,vector<unsigned> > &a , const pair<vector<unsigned>,vector<unsigned> > &b)
{
    if (a.first.size() == b.first.size()) {
        //If sizes of the vectors are equal
        //Sort the graph lexicographically. 
        return std::lexicographical_compare(a.first.begin(),a.first.end(),b.first.begin(),b.first.end());pair<vector<unsigned>,vector<unsigned> > a
    } else {
        //Sort by size.
        return a.first.size() < b.first.size();
    }
}
int main()
{
    std::vector<std::pair<std::vector<unsigned>,std::vector<unsigned> > > a;
    std::sort(a.begin(),a.end(),mySort);
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在C ++中对向量进行排序

来自分类Dev

在C ++中对向量进行排序

来自分类Dev

按每个向量的大小对c ++中向量的向量进行排序

来自分类Dev

在C ++中执行向量交集

来自分类Dev

C ++对向量向量中的多列进行排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

在C ++中对共享指针的向量进行排序

来自分类Dev

在 C++ 中获取二维向量的行向量

来自分类Dev

对结构向量进行排序C ++

来自分类Dev

使用C样式指针但不使用迭代器对向量进行向量的For循环

来自分类Dev

按字典顺序对C ++中的多维向量进行排序

来自分类Dev

C ++-以特定方式对向量中的字符串进行排序

来自分类Dev

C ++在向量中对自定义对象进行排序

来自分类Dev

根据C ++中的列对具有双精度的向量的向量进行排序

来自分类Dev

对坐标向量进行排序C ++

来自分类Dev

使用STL C ++对向量对进行排序

来自分类Dev

使用C / C ++中的用户定义函数对大型向量进行排序

来自分类Dev

将指向2D VLA的指针作为函数参数传递给C中的行向量

来自分类Dev

排序向量C ++

来自分类Dev

C++ 向量排序

来自分类Dev

按偶数和奇数索引对向量进行排序。C ++

来自分类Dev

合并两个向量,而不用C ++对其进行排序

来自分类Dev

使用回调开关对向量进行C ++冒泡排序

来自分类Dev

C ++无法对自定义对象的向量进行排序

来自分类Dev

在C ++中使用向量对数字进行排序

来自分类Dev

在向量C ++的向量中删除向量

来自分类Dev

在C ++中迭代向量的向量

来自分类Dev

在C ++中迭代向量的向量

来自分类Dev

C ++使用<algorithm>对向量的向量进行分区