c++ vector 用sort排序后 怎么比较 两个vector 是否相等
c++ vector<string> 用sort排序后 如何比较 两个vector<string> 是否相等
我在做两个vector<string> 的比较问题,测试时发现,一开始两个
vector<string>赋同样的值时,用“==”号判断是否相等,返回ture
但是两个都加了sort排序后,就不一样了。
vector<string> vec1;
vec1.push_back("1");
vec1.push_back("4");
vec1.push_back("2");
vec1.push_back("3");
vector<string> vec2;
vec2.push_back("4");
vec2.push_back("1");
vec2.push_back("2");
vec2.push_back("2");
if(vec1 == vec2){
cout << "before sort equal" << endl;
}
if(vec1 != vec2) {
cout << "before sort unequal" << endl;
}
//这里因为两个容器存的不一样,所以输出unequal
sort(vec1.begin(), vec1.end());
sort(vec2.begin(), vec2.end());
//sort之后,vec1,和vec2 里面内容 顺序都一样了
if(vec1 == vec2){
cout << "after sort equal" << endl;
}
if(vec1 != vec2) {
cout << "after sort unequal" << endl;
}
//但是为什么还是输出不相等??, 我要判别出sort之后相等,该如何操作?
------解决方案--------------------
排序之后也不相等吧:
第一是 1 2 3 4,第二个是 1 2 2 4;
楼主,你操作失误了吧,哈哈。。
------解决方案--------------------
哎,输入数据错误,年轻人马虎不得啊。。。
------解决方案--------------------
只要vector内的元素提供了operator ==操作符即可,建议定义为全局函数并声明为友元,这里是string,默认就提供了该操作符重载。
------解决方案--------------------
还是要看vector的operator ==是怎么实现的。
我在做两个vector<string> 的比较问题,测试时发现,一开始两个
vector<string>赋同样的值时,用“==”号判断是否相等,返回ture
但是两个都加了sort排序后,就不一样了。
vector<string> vec1;
vec1.push_back("1");
vec1.push_back("4");
vec1.push_back("2");
vec1.push_back("3");
vector<string> vec2;
vec2.push_back("4");
vec2.push_back("1");
vec2.push_back("2");
vec2.push_back("2");
if(vec1 == vec2){
cout << "before sort equal" << endl;
}
if(vec1 != vec2) {
cout << "before sort unequal" << endl;
}
//这里因为两个容器存的不一样,所以输出unequal
sort(vec1.begin(), vec1.end());
sort(vec2.begin(), vec2.end());
//sort之后,vec1,和vec2 里面内容 顺序都一样了
if(vec1 == vec2){
cout << "after sort equal" << endl;
}
if(vec1 != vec2) {
cout << "after sort unequal" << endl;
}
//但是为什么还是输出不相等??, 我要判别出sort之后相等,该如何操作?
------解决方案--------------------
排序之后也不相等吧:
第一是 1 2 3 4,第二个是 1 2 2 4;
楼主,你操作失误了吧,哈哈。。
------解决方案--------------------
哎,输入数据错误,年轻人马虎不得啊。。。
------解决方案--------------------
只要vector内的元素提供了operator ==操作符即可,建议定义为全局函数并声明为友元,这里是string,默认就提供了该操作符重载。
------解决方案--------------------
还是要看vector的operator ==是怎么实现的。