Здравствуйте, Alexander Pazdnikov, Вы писали:
AP> Здравствуйте, Коллеги.
AP>Помогите, пожалуйста, перегрузить оператор сравнения для std::vector<boost::shared_ptr> чтобы сравнивались не указатели, а объекты по этим указателям.
AP>AP>#include <vector>
AP>#include <boost/shared_ptr.hpp>
AP>#include <boost/make_shared.hpp>
AP>#include <iostream>
AP>using namespace std;
AP>using namespace boost;
AP>int main()
AP>{
AP> vector<shared_ptr<int> > v1, v2;
AP> v1.push_back(make_shared<int>(1));
AP> v2.push_back(make_shared<int>(1));
AP> bool equal = v1 == v2; // здесь хочу получить true вместо false
AP> cout << equal << endl;
AP> cout << "v1[0] = " << v1[0] << " -> " << *v1[0] << endl;
AP> cout << "v2[0] = " << v2[0] << " -> " << *v2[0] << endl;
AP> vector<int> v3, v4;
AP> v3.push_back(1);
AP> v4.push_back(1);
AP> equal = v3 == v4;
AP> cout << equal << endl;
AP> cout << "v3[0] = " << v3[0] << endl;
AP> cout << "v4[0] = " << v4[0] << endl;
AP> return 0;
AP>}
AP>
Вы можете воспользоваться стандартным алгоритмом
std::lexicographical_compare с предикатом.