c++用sort对vector排序问题
#include<string>#include<algorithm>#include<vector>usingnamespacestd;vector<string>a;...
#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中的每一位 展开
#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中的每一位 展开
5个回答
展开全部
把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;
}
或者直接 通过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;
}
展开全部
应该是字符串长度不够,导致越界,直接用string的compare函数即可
return a.compare(b);
return a.compare(b);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我在我的电脑上编译执行了,程序没有错,所以应该是你的电脑环境有问题。
你可以单步调试你的程序,看是哪一行出错了。
你可以单步调试你的程序,看是哪一行出错了。
追问
就是sort那里中断了,我的是VS2010,出错信息是在 a[i] < b[i] 那里,无效的运算符 < ,我是想按照ASCII码大小来比较string中的每一位
追答
我搜看了一下,sort你要传递一个函数给他,但是这个函数不是普通的函数(function),而是仿函数(functor),仿函数是C++编程里的一个概念,就是说,一个类,它内部重载了小括号运算符,就称为仿函数。
建议你搜一下 STL sort 中的比较函数 ,看看别人怎么写的仿函数。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
vc6没有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询