Как разделить 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

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