Telegram Group & Telegram Channel
Сегодня покажу вам полезную вещь, которую часто упускают даже опытные C++ разработчики - Альтернативные способы инициализации std::vector.


🔹 std::vector: Инициализация — больше, чем просто {}

Многие используют векторы так:


std::vector<int> v = {1, 2, 3};


Но есть и другие варианты, которые помогут сделать код выразительнее, а в некоторых случаях — эффективнее.


🔸 1. Инициализация с количеством элементов и значением


std::vector<int> v(5, 10); // 5 элементов по 10


🔥 Часто полезно, когда нужен предзаполненный буфер.


🔸 2. С использованием std::fill


std::vector<int> v(10);
std::fill(v.begin(), v.end(), 7);


Удобно, когда вектор уже создан, но нужно всё заполнить определённым значением.


🔸 3. std::generate и std::iota


std::vector<int> v(10);
std::iota(v.begin(), v.end(), 1); // 1, 2, 3, ..., 10


🚀 Идеально подходит, когда нужно создать диапазон значений.


🔸 4. Из другой коллекции (через итераторы)


std::list<int> lst = {4, 5, 6};
std::vector<int> v(lst.begin(), lst.end());


🔄 Позволяет гибко конвертировать контейнеры.


🔸 5. Через reserve + emplace_back


std::vector<std::pair<int, int>> v;
v.reserve(3);
v.emplace_back(1, 2);
v.emplace_back(3, 4);
v.emplace_back(5, 6);


🔧 Отлично, когда важна производительность и хочется избежать лишнего копирования.


Совет: Не забывайте про reserve, если знаете итоговый размер вектора — избежите лишних реаллокаций.

Надеюсь, вы узнали что-то новое. Поделитесь, какие приёмы чаще используете вы?

➡️ @cpp_geek



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

Сегодня покажу вам полезную вещь, которую часто упускают даже опытные C++ разработчики - Альтернативные способы инициализации std::vector.


🔹 std::vector: Инициализация — больше, чем просто {}

Многие используют векторы так:


std::vector<int> v = {1, 2, 3};


Но есть и другие варианты, которые помогут сделать код выразительнее, а в некоторых случаях — эффективнее.


🔸 1. Инициализация с количеством элементов и значением


std::vector<int> v(5, 10); // 5 элементов по 10


🔥 Часто полезно, когда нужен предзаполненный буфер.


🔸 2. С использованием std::fill


std::vector<int> v(10);
std::fill(v.begin(), v.end(), 7);


Удобно, когда вектор уже создан, но нужно всё заполнить определённым значением.


🔸 3. std::generate и std::iota


std::vector<int> v(10);
std::iota(v.begin(), v.end(), 1); // 1, 2, 3, ..., 10


🚀 Идеально подходит, когда нужно создать диапазон значений.


🔸 4. Из другой коллекции (через итераторы)


std::list<int> lst = {4, 5, 6};
std::vector<int> v(lst.begin(), lst.end());


🔄 Позволяет гибко конвертировать контейнеры.


🔸 5. Через reserve + emplace_back


std::vector<std::pair<int, int>> v;
v.reserve(3);
v.emplace_back(1, 2);
v.emplace_back(3, 4);
v.emplace_back(5, 6);


🔧 Отлично, когда важна производительность и хочется избежать лишнего копирования.


Совет: Не забывайте про reserve, если знаете итоговый размер вектора — избежите лишних реаллокаций.

Надеюсь, вы узнали что-то новое. Поделитесь, какие приёмы чаще используете вы?

➡️ @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/306

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

A project of our size needs at least a few hundred million dollars per year to keep going,” Mr. Durov wrote in his public channel on Telegram late last year. “While doing that, we will remain independent and stay true to our values, redefining how a tech company should operate.

Telegram today rolling out an update which brings with it several new features.The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. The update also adds interactive emoji. When you send one of the select animated emoji in chat, you can now tap on it to initiate a full screen animation. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations. This is then visible to you or anyone else who's also present in chat at the moment. The animations are also accompanied by vibrations.

telegram from es


Telegram C++ geek
FROM USA