Как разделить std :: массив без копирования?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как разделить std :: массив без копирования?

Сообщение Anonymous »

Мне нужно получить доступ к std :: ray x по двум функциям, а именно Funa и Funb. Funa нуждается только в первых 6 записях X и Funning последние 3 записи. Я ограничен C ++ 14. < /p>
Я знаю, что есть много возможностей для этого, однако я пытаюсь выяснить, в порядке ли мой путь, в вашем отношении. Производительность имеет наивысший приоритет в моем случае, и, поскольку мой код работает в бесконечном цикле, копировал - нет.// somewhere in the class definition: declare member variables of a class

void funA(const std::array &xA);
void funB(const std::array &xB);

std::array x;
std::array xA;
std::array xB;

// somewhere in the loop
std::move(x.begin(), x.begin() + xA.size(), xA.begin());
std::move(x.begin() + xA.size(), x.end(), xB.begin());

funA(xA);
funB(xB);

std::move(xA.begin(), xA.end(), x.begin());
std::move(xB.begin(), xB.end(), x.begin() + xA.size());
< /code>
Итак, я просто перемещаю соответствующие части X в XA и XB, я называю Funa и Funb и, наконец X для остальной части моего кода. Примечание: XA и XB передаются в качестве ссылки CONST. < /P>
Это действительный способ идти? Есть что -то, что может пойти не так? Двигается взад и вперед ОК или не идет? Или эта процедура вообще не так быстро? Я еще не слишком много общался с Std :: Move, поэтому любой комментарий или подсказка очень ценят.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ut-copying
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»