Мне нужно получить доступ к 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
Как разделить std :: массив без копирования? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1738143604
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, поэтому любой комментарий или подсказка очень ценят.
Подробнее здесь: [url]https://stackoverflow.com/questions/79393687/how-to-split-stdarray-without-copying[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия