Re: Сравнение vector<shared_ptr>
От: Сыроежка  
Дата: 29.12.11 11:11
Оценка:
Здравствуйте, 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 с предикатом.
Меня можно встретить на www.cpp.forum24.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.