std::move
![]() |
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
Заголовочный файл <algorithm>
|
||
template< class InputIt, class OutputIt > OutputIt move( InputIt first, InputIt last, OutputIt d_first ); |
(начиная с C++11) | |
[first, last)
, в другой диапазон начало в d_first
. После этой операции элементы в переехал из-диапазона будет по-прежнему содержат допустимые значения соответствующего типа, но не обязательно те же значения, до переезда.[first, last)
, to another range beginning at d_first
. After this operation the elements in the moved-from range will still contain valid values of the appropriate type, but not necessarily the same values as before the move.You can help to correct and verify the translation. Click here for instructions.
Содержание |
[править] Параметры
first, last | - | диапазон элементов для перемещения
Original: the range of elements to move The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
d_first | - | В начале назначения диапазона. Если d_first находится в пределах [first, last) , std::move_backward должна быть использована вместо NJ STD :: ходу </ span> . Original: the beginning of the destination range. If d_first is within [first, last) , std::move_backward must be used instead of NJ STD :: ходу </ span>. </div>The text has been machine-translated via Google Translate. </div></div></div></div>
You can help to correct and verify the translation. Click here for instructions. |
Type requirements | ||
-InputIt must meet the requirements of InputIterator .
| ||
-OutputIt must meet the requirements of OutputIterator .
|
[править] Возвращаемое значение
You can help to correct and verify the translation. Click here for instructions.
[править] Сложность
last - first
двигаться заданий.last - first
move assignments.You can help to correct and verify the translation. Click here for instructions.
[править] Возможная реализация
template<class InputIt, class OutputIt> OutputIt move(InputIt first, InputIt last, OutputIt d_first) { while (first != last) { *d_first++ = std::move(*first++); } return d_first; } |
[править] Пример
Следующий код перемещает поток объектов (которые сами по себе не являются копируемой) из одной емкости в другую. </ P>
You can help to correct and verify the translation. Click here for instructions.
#include <iostream>
#include <vector>
#include <list>
#include <iterator>
#include <thread>
#include <chrono>
void f(int n)
{
std::this_thread::sleep_for(std::chrono::seconds(n));
std::cout << "thread " << n << " ended" << '\n';
}
int main()
{
std::vector<std::thread> v;
v.emplace_back(f, 1);
v.emplace_back(f, 2);
v.emplace_back(f, 3);
std::list<std::thread> l;
// copy() would not compile, because std::thread is noncopyable
зЬй :: ходу </ span>(v.begin(), v.end(), std::back_inserter(l));
for(auto& t : l) t.join();
}
</div>
You can help to correct and verify the translation. Click here for instructions.
thread 1 ended thread 2 ended thread 3 ended
[править] См. также
(C++11) |
перемещает диапазон элементов в новое место в обратном порядке Original: moves a range of elements to a new location in backwards order The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (шаблон функции) |