C++vector排序问题。

我现在在vector中存放的是Sprite类的对象。
vector<Sprite * > spriteVector;
Sprite类中有个int valuse变量。我想按照valuse的大小对spriteVector里边的Sprite对象排序。我知道可以用sort方法排序,但是我写的排序规则报错。
bool AIScript::upSort(const Sprite &v1, const Sprite &v2){
return v1.valuse > v2.valuse;
}

第1个回答  2012-11-15
全局函数
bool upSort(Sprite* v1, Sprite* v2){
return v1->valuse > v2->valuse;
}
调用
std::sort(spriteVector.begin(), spriteVector.end(), upSort);
第2个回答  2012-07-10
vector<Sprite * > spriteVector; //???
为什么要用指针对象?难道你的对象都是new出来的?
如果不是那么你想要的是不是这样?
vector<Sprite> spriteVector;

如果是的话,那么你在使用upSort的时候是否用了*呢?追问

vector spriteVector;
没错 , 我存的的确是指针对象。

第3个回答  2012-07-10
你的形参是类对象,你的实参是不是传递的类对象指针,Called object type '<bound mamber funtion type>' is not a function or function pointer追问

那我排序规则的方法应该怎么写?

追答

你的函数大致是不是这个意思
*********************************
class Student
{
public:
int value;
Student(){value = 0;}
};

bool sort(const Student &s1, const Student &s2)
{
return s1.value > s2.value;
}

int main()
{
Student xin, old;
xin.value = 12;
old.value = 13;
cout<<sort(xin, old)<<endl;
return 0;
}

追问

我的vector存储的是对象指针, 不是对象。所以应该不是这么写的吧。
我现在这么写不知道有没有问题:
bool AIScript::upSort(Sprite *actor1 , Sprite *actor2){
return actor1->valuse > actor2->valuse
}

追答

应该没问题。还有错误报告嘛

追问

还是会报错。。。

追答

错误报告是什么

第4个回答  2012-07-10
重载<号试试,map是根据<,来判断排序关系的,vector不太清楚了
第5个回答  2012-07-10
报错显示的是什么?追问

我想可能是不是我的vector里边存储的是指针的问题。完了我的排序规则的自变量写的不对?

追答

麻烦把错误报告帖出来看看

追问

Called object type '' is not a function or function pointer

追答

bound mamber funtion type是你自己定义的类型?
看起来不像是系统的....member拼错,function也拼错

追问

我是手动输入的 , 因为我是在另一台机器上运行的程序。

追答

双击错误提示定位一下你的错误代码所在的行

C++vector排序问题。
std::sort(spriteVector.begin(), spriteVector.end(), upSort);

C++ vector 排序问题
1、initJumper()初始化cVer jumper[NUM],返回vector<cVer> jumperVec 2、showEqu(),显示list<string *> 的list中的字符串,每个元素是<string *> 。3、showList1,正序显示vector<cVer> 4、showList2,逆序显示vector<cVer> 这个程序片段没有实质性的排序内容,理解问题的关键在于STL中迭代器...

c++读入一些整数,对其进行从小到大的排序要求使用vector和sort...
int main(){ int x;vector<int> a;\/\/定义一个容器 while(cin>>x&&x!='e'){ a.push_back(x);\/\/变量x在容器a尾部入栈 } sort(a.begin(),a.end());\/\/排序 for(int i=0;i<a.size();i++)\/\/输出(a.size():读取容器a的元素个数)cout<<a[i]<<" ";return 0;} ...

c++用sort对vector排序问题
我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。你可以单步调试你的程序,看是哪一行出错了。

c++中怎样将vector中的元素倒序输出?
include <iostream> include <vector> using namespace std;int main(){ vector<int> vec;for (int i = 0; i < 5; ++i)vec.push_back(i);vector<int>::reverse_iterator it;for (it = vec.rbegin(); it != vec.rend(); it++)cout<<*it<<" ";cout<<endl;} ...

c++ vector 排序 sort 用不起来 我用的是code::blocks
1)手动列出所有字符串:vector <string> words("the", "quick", "red", "fox", "jumps", "over", "the", "slow", "red", "turtle");2)利用boost库的split来分割字符串:\/\/ 其他头文件自己加上#include <boost\/algorithm\/string.hpp>using namespace boost;vector <string> words;split...

c++用sort对vector排序问题
include<algorithm> include <vector> using namespace std;vector<string> a;int n = 7;bool compare(string a, string b){ if(a

C++中map,vector容器的<(小于号)比较算法是否为严格弱序算法?_百度知 ...
首先,两个vector容器之间只有“==”和“!=”两种关系,vector容器内部元素的类型也不一定要重载小于号。不过,如果要对一个vector进行排序的话,那么元素一定要重载小于号,而且是严格弱序。因为sort函数对于A和B来说,如果A<B和B<A同时不成立的话,那么A就等于B。如果在 A != B 时,出现A < ...

c++输入10个数存入vector中,升序排序后输出. 提示:使用sort函数_百度...
include <vector> using namespace std;class myclass { public:myclass(int a, int b):first(a), second(b){} int first;int second;bool operator < (const myclass &m)const { return first < m.first;} };bool less_second(const myclass & m1, const myclass & m2) { return m...

c++中对于几组字符串的升序或降序排序怎么做???
C++对字符串排序建议用STL下的Vector容器(集合)中的Sort函数排序 创建一个使用string类型的泛型集合vector类对象,在里面把字符串添加进去(使用集合中的Add函数即可),然后可以用vector集合的Sort函数排序(因为集合中的内容全部是字符串,所以不用担心遇到异常)

相似回答
大家正在搜