【发布时间】:2013-11-04 07:41:08
【问题描述】:
我有一个包含 long 类型元素的向量向量:
vector< vector<long> > Data(N,vector<long>(M));
我必须根据它们的值对这些向量进行排序,即对于两个向量
Data[i] & Data[j]
if for some k Data[i][k]< Data[j][k]
and Data[i][t]==Data[j][t] for all 0<=t<=(k-1),
then Data[i] should come before Data[j] in the final vector
不是为了上面的任务我写了下面的代码:
sort(Data.begin(),Data.end(),myfunc);
where
bool myfunc(vector<long> vec1,vector<long> vec2){
int i=0;
while(i<vec1.size()){
if(vec1[i]<vec2[i]){
return false;
}
else if(vec1[i]>vec2[i]){
return true;
}
i++;
}
return false;
}
但是,我没有得到想要的输出。实际上输入和输出向量是相同的。我哪里做错了??我错过了什么吗??
【问题讨论】:
-
结果是一样的,但是函数应该是
bool myfunc(const vector<long> &vec1,const vector<long>& vec2) -
我不确定我是否遵循所需的逻辑,但是简单调用
std::sort有什么问题?