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: |

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.

Telegram announces Search Filters

With the help of the Search Filters option, users can now filter search results by type. They can do that by using the new tabs: Media, Links, Files and others. Searches can be done based on the particular time period like by typing in the date or even “Yesterday”. If users type in the name of a person, group, channel or bot, an extra filter will be applied to the searches.

telegram from hk


Telegram C++ geek
FROM USA