vector内嵌套Vector进行排序

killer9806 2011-07-19 11:08:38
struct temp
{
vector<double> vtRad;
int i;
};

vector<temp> vtTemp;
想把vtTemp先按照i进行排序,当i相同时,利用vtRad的大小进行排序。
...全文
417 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
killer9806 2011-07-23
  • 打赏
  • 举报
回复
谢谢回答。问题按4楼进行解决了。同时也谢谢5楼的提示
lc_windson 2011-07-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 killer9806 的回复:]
谢谢。
参考上面的答案:改了一下。
bool cmp(const temp &v1,const temp &v2)
{
double dError = 0.01
if(v1.i!=v2.i)
return(v1.i<v2.i);
else
{
int isize = v1.vtRad.size();
for (int i = 0; i < isize; ……
[/Quote]




LZ有个问题想说下,你的isize是不是应该定义为size_type类型呢。c++primer上是这么写的,可能这儿问题不大,不过写成int是个不好的习惯~ ~
lifesider 2011-07-21
  • 打赏
  • 举报
回复
bool cmp(const temp &v1,const temp &v2)
{
double dError = 0.01
if(v1.i!=v2.i)
return(v1.i<v2.i);
else
{
int isize = v1.vtRad.size();
for (int i = 0; i < isize; i ++)
if(fabs(v1.vtRad[i] - v2.vtRad[i]) > dError)
return (v1.vtRad[i] < v2.vtRad[i]);
}
}

你的return语句都在if判断后,全局缺少return
改成如下
bool cmp(const temp &v1,const temp &v2)
{
double dError = 0.01
if(v1.i!=v2.i)
return(v1.i<v2.i);
else
{
int isize = v1.vtRad.size();
for (int i = 0; i < isize; i ++)
if(fabs(v1.vtRad[i] - v2.vtRad[i]) > dError)
return (v1.vtRad[i] < v2.vtRad[i]);
}
return true;
}

killer9806 2011-07-21
  • 打赏
  • 举报
回复
谢谢。
参考上面的答案:改了一下。
bool cmp(const temp &v1,const temp &v2)
{
double dError = 0.01
if(v1.i!=v2.i)
return(v1.i<v2.i);
else
{
int isize = v1.vtRad.size();
for (int i = 0; i < isize; i ++)
if(fabs(v1.vtRad[i] - v2.vtRad[i]) > dError)
return (v1.vtRad[i] < v2.vtRad[i]);
}
}

但是编译时提示:
不是所有控件都有返回值。

lc_windson 2011-07-20
  • 打赏
  • 举报
回复
#include <algorithm>


bool cmp(const temp &v1,const temp &v2)
{
if(v1.i!=v2.i) return(v1.i<v2.i);
else return (v1.vtRad<v2.vtRad);



}



sort(vtTemp.begin(),vtTemp.end(),cmp);


头文件嵌入algorithm,自定义sort中的cmp,然后排序就行,比较函数cmp已经列在上面了
测试通过了,希望能帮助到lz
Vegertar 2011-07-19
  • 打赏
  • 举报
回复
bool operator< (const temp &left, const temp &right)
{
return left.i < right.i ? true : left.i == right.i ? left.vtRad < right.vbRad : false;
}

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧