std::swap; перед неквалифицированным swap подтягивает поиск, зависящий от аргумента к пользовательским перегрузкам.">
Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗cpSpNlSw 471 of 696 menu
◀ ▶

Обмен через поиск в C++

Идиома using std::swap; перед неквалифицированным swap подтягивает поиск, зависящий от аргумента к пользовательским перегрузкам.

Для типа из пространства имен можно обменять не весь объект целиком, а выбранный член - главное, чтобы перегрузка принимала ссылки на этот тип. После директивы using имя swap ищется среди кандидатов std и среди функций рядом с типом.

Запишем структуру с полем Label, пользовательский обмен и вызов через поиск в main:

#include <iostream> #include <utility> struct Label { int code; }; namespace cargo { struct Crate { Label mark; }; void swap(Crate& left, Crate& right) { std::swap(left.mark.code, right.mark.code); } } int main() { cargo::Crate alpha{{1}}; cargo::Crate beta{{2}}; using std::swap; swap(alpha, beta); std::cout << alpha.mark.code << " " << beta.mark.code << "\n"; return 0; }

В пространстве note опишите struct Page с int index. Добавьте swap для двух Page, меняющий только index. Обменяйте два объекта через using std::swap; и выведите оба индекса.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить