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

The STAR Market, as is implied by the name, is heavily geared toward smaller innovative tech companies, in particular those engaged in strategically important fields, such as biopharmaceuticals, 5G technology, semiconductors, and new energy. The STAR Market currently has 340 listed securities. The STAR Market is seen as important for China’s high-tech and emerging industries, providing a space for smaller companies to raise capital in China. This is especially significant for technology companies that may be viewed with suspicion on overseas stock exchanges.

A Telegram spokesman declined to comment on the bond issue or the amount of the debt the company has due. The spokesman said Telegram’s equipment and bandwidth costs are growing because it has consistently posted more than 40% year-to-year growth in users.

telegram from fr


Telegram C++ geek
FROM USA