std::forward_list::merge
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
void merge( forward_list& other ); |
(1) | (начиная с C++11) |
void merge( forward_list&& other ); |
(1) | (начиная с C++11) |
template <class Compare> void merge( forward_list& other, Compare comp ); |
(2) | (начиная с C++11) |
template <class Compare> void merge( forward_list&& other, Compare comp ); |
(2) | (начиная с C++11) |
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
other
становится пустым после операции. Функция ничего не делает, если this == &other. Если get_allocator() != other.get_allocator(), поведение не определено. Нет итераторы или ссылки стали недействительны, кроме того, что итераторы переехал элементы теперь обратиться в *this, а не в other
. Первый вариант используется operator< для сравнения элементов, вторая версия использует данную функцию сравнения comp
.other
becomes empty after the operation. The function does nothing if this == &other. If get_allocator() != other.get_allocator(), the behavior is undefined. No iterators or references become invalidated, except that the iterators of moved elements now refer into *this, not into other
. The first version uses operator< to compare the elements, the second version uses the given comparison function comp
.Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Параметры
other | — | другой контейнер для объединения
Оригинал: another container to merge Текст был переведён автоматически используя Переводчик Google. Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда. |
comp | — | объект функции сравнения (т.е. объект, удовлетворяющий требованиям Compare), который возвращает true, если первый аргумент "меньше", чем второй. Определение сравнения должно быть эквивалентно: bool cmp(const Type1 &a, const Type2 &b); Использование noexcept (начиная с C++11) желательно но не обязательно. Параметры не обязаны передаваться по const&, но не должны модифицироваться. Они должны быть способны принимать все значения типа (даже const) |
[править] Возвращаемое значение
(Нет)
[править] Пример
#include <iostream> #include <forward_list> std::ostream& operator<<(std::ostream& ostr, const std::forward_list<int>& list) { for (auto &i : list) { ostr << " " << i; } return ostr; } int main() { std::forward_list<int> list1 = { 5,9,0,1,3 }; std::forward_list<int> list2 = { 8,7,2,6,4 }; list1.sort(); list2.sort(); std::cout << "list1: " << list1 << "\n"; std::cout << "list2: " << list2 << "\n"; list1.merge(list2); std::cout << "merged: " << list1 << "\n"; }
Вывод:
list1: 0 1 3 5 9 list2: 2 4 6 7 8 merged: 0 1 2 3 4 5 6 7 8 9
[править] Сложность
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] См. также
(C++11) |
перемещает элементы из другого forward_list (public функция-элемент) |