c++请教 vector sort怎么写

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++请教 vector sort怎么写相关的知识,希望对你有一定的参考价值。

1,使用vector类模板用于执行sort整数型的vectors 2.测试array size分别为10,20,100(使用void random_fill (vector<int> &v, int lb, int ub) for(int i = 0; i < (int) v.size() ;i++) v[i] = random(lb,ub); int random (int lb, int ub) int x; x = rand(); x = x % (ub - lb + 1); x = x + lb; return x; 来表示用任意数代表的一个整数的vector) 3.如果vector包含一个分子或者为空,那就保留它;否则,从vector里面拿出第一个分子,叫它x,创建两个新vectors: left,right,left 包含所有小于x的,但除了x;right包含所有大于x的,然后执行一个quick_sort在left,right递归,最后把left,分子x,right放进一个新的vector;思路是把一个array分成两部分,分别存进两个objects of type vector,一个包含所有小于或等于x的分子,另一个包含所有大于 x的分子; 另外一个方法是去执行一个memory _efficient _quicksort ,并且测试它,这个执行不需要额外的memory 分配,处理重新排列的原始vector里面的所有分子,比如x移到合适的位置,所有比x小或等于x的分子移到x的左边,所有大于x的移到x的右边,它 实行了一个递归调用在原始vector的部分中,所以在整个运算中不需要创建额外的vector object. 需要大家帮帮我,写一下,第三个 需要写出两种方法

参考技术A 对于C++的模板库中本来就可以使用<algorithm>这个
头文件
,其中对于STL的
sort函数
就是使用quick
sort,直接使用就可以了啊。

c++用sort对vector排序问题

#include<string>
#include<algorithm>
#include <vector>
using namespace std;
vector<string> a;
int n = 7;
bool compare(string a, string b)

for(int i = 0; i < n - 1; ++ i)

if(a[i] < b[i])
return true;

return false;

int main()

a.push_back("+-+--+");
a.push_back("-+-+--");
a.push_back("- ++ ");
a.push_back("- ++++");
sort(a.begin(), a.end(), compare);
return 0;


运行时错误,请问怎么回事。。。
就是sort那里中断了,我的是VS2010,出错信息是在 a[i] < b[i] 那里,无效的运算符 < ,我是想按照ASCII码大小来比较string中的每一位

把a[i] 和 b[i] 进行强制类型转化为int
或者直接 通过string 里面重载<
#include<string>
#include<algorithm>
#include <vector>
using namespace std;
vector<string> a;
int n = 7;
bool compare(string a, string b)

if(a<b)
return true;
return false;

int main()

a.push_back("+-+--+");
a.push_back("-+-+--");
a.push_back("- ++ ");
a.push_back("- ++++");
sort(a.begin(), a.end(), compare);
return 0;
参考技术A 应该是字符串长度不够,导致越界,直接用string的compare函数即可
return a.compare(b);
参考技术B 我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。
你可以单步调试你的程序,看是哪一行出错了。追问

就是sort那里中断了,我的是VS2010,出错信息是在 a[i] < b[i] 那里,无效的运算符 < ,我是想按照ASCII码大小来比较string中的每一位

追答

我搜看了一下,sort你要传递一个函数给他,但是这个函数不是普通的函数(function),而是仿函数(functor),仿函数是C++编程里的一个概念,就是说,一个类,它内部重载了小括号运算符,就称为仿函数。

建议你搜一下 STL sort 中的比较函数 ,看看别人怎么写的仿函数。

本回答被提问者采纳
参考技术C 用DIRECTX技术 参考技术D vc6没有问题

以上是关于c++请教 vector sort怎么写的主要内容,如果未能解决你的问题,请参考以下文章

c++用sort对vector排序问题

c++小白求助!用sort对vector排序的问题

vector c++ 中的sort函数的调用时的比较函数该如何写(若比较的是两个结构体)??

vector 排序

请教关于C++初始化vector的问题

C++标准模板库之vector