Telegram Group & Telegram Channel
🧵 Сегодня покажу вам простой, но полезный приём для оптимизации копирования std::vector.

Часто вижу такую конструкцию:


std::vector<int> result;
result = getVector();


Если getVector() возвращает временный объект, то копирование можно избежать, используя std::move или Return Value Optimization (RVO).

Но вот интересное: если вы точно знаете, что копия не нужна, используйте std::vector::swap с временным объектом:


std::vector<int> result;
std::vector<int> tmp = getVector();
result.swap(tmp);


Почему это может быть лучше?
🔸 Быстрая реализация через указатели.
🔸 Не вызывает лишние аллокаторы.
🔸 Не зависит от move конструктора.
🔸 Гарантированно не бросает исключений, если swap noexcept (что обычно так).

В новых компиляторах result = std::move(tmp) даст тот же эффект, но swap — это старый добрый способ, который работает предсказуемо.

🧠 Подумайте, где можно применить это у себя — особенно если работаете с большими контейнерами.

➡️ @cpp_geek



tg-me.com/cpp_geek/312
Create:
Last Update:

🧵 Сегодня покажу вам простой, но полезный приём для оптимизации копирования std::vector.

Часто вижу такую конструкцию:


std::vector<int> result;
result = getVector();


Если getVector() возвращает временный объект, то копирование можно избежать, используя std::move или Return Value Optimization (RVO).

Но вот интересное: если вы точно знаете, что копия не нужна, используйте std::vector::swap с временным объектом:


std::vector<int> result;
std::vector<int> tmp = getVector();
result.swap(tmp);


Почему это может быть лучше?
🔸 Быстрая реализация через указатели.
🔸 Не вызывает лишние аллокаторы.
🔸 Не зависит от move конструктора.
🔸 Гарантированно не бросает исключений, если swap noexcept (что обычно так).

В новых компиляторах result = std::move(tmp) даст тот же эффект, но swap — это старый добрый способ, который работает предсказуемо.

🧠 Подумайте, где можно применить это у себя — особенно если работаете с большими контейнерами.

➡️ @cpp_geek

BY C++ geek


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/cpp_geek/312

View MORE
Open in Telegram


C geek Telegram | DID YOU KNOW?

Date: |

How Does Bitcoin Mining Work?

Bitcoin mining is the process of adding new transactions to the Bitcoin blockchain. It’s a tough job. People who choose to mine Bitcoin use a process called proof of work, deploying computers in a race to solve mathematical puzzles that verify transactions.To entice miners to keep racing to solve the puzzles and support the overall system, the Bitcoin code rewards miners with new Bitcoins. “This is how new coins are created” and new transactions are added to the blockchain, says Okoro.

Mr. Durov launched Telegram in late 2013 with his brother, Nikolai, just months before he was pushed out of VK, the Russian social-media platform he founded. Mr. Durov pitched his new app—funded with the proceeds from the VK sale—less as a business than as a way for people to send messages while avoiding government surveillance and censorship.

C geek from sa


Telegram C++ geek
FROM USA