2016-01-25 1 views
0

Я использую следующий станд :: двигаться синтаксис:станда :: двигаться с тремя параметрами - итератор, принятый экземпляром

std::move(values.begin(), values.end(), dest); 

dest является прямым выходом итератором, и контейнер назначения имеет по крайней мере values.size() детали после dest

проблема заключается в том, я называю это несколько раз в цикле, но dest, кажется, передается по копии, и, таким образом, элементы dest указывает на перезаписывается каждый раз, вместо того, чтобы быть приложены.

  1. Где документация для этого синтаксиса? Я могу найти только одну версию параметра на cppreference.
  2. Есть ли способ передать итератор dest по ссылке или получить его результат как возвращаемое значение, чтобы избежать «перезаписывания» поведения при вызове указанной функции несколько раз в цикле?

Я знаю, что я мог бы использовать dest += values.size(); каждый раз, но это ради лучшего знания ...

Благодаря

+0

Что такое 'dest'? – TartanLlama

+3

Вы, вероятно, хотите 'dest = std :: move (values.begin(), values.end(), dest);' – Jarod42

+0

Ищите алгоритм: http://en.cppreference.com/w/cpp/ алгоритм/перемещение (обратите внимание, что в нижней части есть перекрестная ссылка для переключения между * алгоритмом * move и * utility * move) – Jarod42

ответ

7

dest итератора возвращается из алгоритма перемещения. Вы можете просто использовать:

dest = std::move(values.begin(), values.end(), dest); 

Вот ссылка на этот алгоритм: std::move (algorithm)

 Смежные вопросы

  • Нет связанных вопросов^_^