Здравствуйте, Аноним, Вы писали:
А>Добрый вечер всем! А>Есть пара тупых вопросов про std::set. Компилятор — Visual C++ 2010. А>1. Как в следующем коде сделать так, что внутри set элементы сортировались не по значениям указателей, а по значениям того, на что указывают указатели? А>2. Как сделать так, чтобы при этом срабатывало равенство set3 == set4? Сейчас оно не срабатывает.
Не храни целые числа в множестве по указателю, храни по значению.
Ламерский вопрос про std::set
От:
Аноним
Дата:
24.07.11 20:14
Оценка:
Добрый вечер всем!
Есть пара тупых вопросов про std::set. Компилятор — Visual C++ 2010.
1. Как в следующем коде сделать так, что внутри set элементы сортировались не по значениям указателей, а по значениям того, на что указывают указатели?
2. Как сделать так, чтобы при этом срабатывало равенство set3 == set4? Сейчас оно не срабатывает.
Здравствуйте, Аноним, Вы писали:
А>Добрый вечер всем! А>Есть пара тупых вопросов про std::set. Компилятор — Visual C++ 2010. А>1. Как в следующем коде сделать так, что внутри set элементы сортировались не по значениям указателей, а по значениям того, на что указывают указатели?
bool bByPtrIntLess( int *p1, int *p2)
{
return *p1 < *p2;
}
set<int*, bByPtrIntLess> set3, set4;
А>2. Как сделать так, чтобы при этом срабатывало равенство set3 == set4? Сейчас оно не срабатывает.
Пройдись по элементам первого сета и поищи их во втором. Если хоть один не нашелся, то не равны. Перед началом сравни размеры, если разные, то множества точно не равны.
Я как-то задался подобным вопросом, поковырял stl, там что-то было подходящее, но оно как-то не так работало, как я хотел, сделал как выше.
А>>2. Как сделать так, чтобы при этом срабатывало равенство set3 == set4? Сейчас оно не срабатывает. M>Пройдись по элементам первого сета и поищи их во втором. Если хоть один не нашелся, то не равны. Перед началом сравни размеры, если разные, то множества точно не равны. M>Я как-то задался подобным вопросом, поковырял stl, там что-то было подходящее, но оно как-то не так работало, как я хотел, сделал как выше.
Достаточно пройтись по элементам от begin до end каждого сета, сравнивая каждый элемент, ибо порядок элементов гарантирован и определен предикатом.
Как много веселых ребят, и все делают велосипед...
Здравствуйте, ononim, Вы писали:
M>>Пройдись по элементам первого сета и поищи их во втором. Если хоть один не нашелся, то не равны. Перед началом сравни размеры, если разные, то множества точно не равны. O>Достаточно пройтись по элементам от begin до end каждого сета, сравнивая каждый элемент, ибо порядок элементов гарантирован и определен предикатом.
Точно, я так и сделал Почему-то правда запомнилась первая глупая мысль