Telegram Group & Telegram Channel
πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² C++: малСнькиС хитрости для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… скоростСй

БСгодня ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² C++. Π”Π°ΠΆΠ΅ Ссли ваш ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ нСсколько Ρ‚Ρ€ΡŽΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ максимум ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ².



πŸ”₯ 1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… вычислСний Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
❌ ΠŸΠ»ΠΎΡ…ΠΎ:

for (int i = 0; i < vec.size(); i++) {
process(vec[i]);
}

βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ:

size_t size = vec.size();
for (size_t i = 0; i < size; i++) {
process(vec[i]);
}

ΠŸΠΎΡ‡Π΅ΠΌΡƒ? vec.size() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, особСнно Ссли это Π½Π΅ std::vector, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.



⚑ 2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ reserve() для Π²Π΅ΠΊΡ‚ΠΎΡ€Π°
Если Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько элСмСнтов Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² std::vector, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ reserve(). Π­Ρ‚ΠΎ сократит количСство Ρ€Π΅Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ памяти.


std::vector<int> vec;
vec.reserve(1000); // Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅ΠΌ мСсто для 1000 элСмСнтов
for (int i = 0; i < 1000; i++) {
vec.push_back(i);
}




🏎️ 3. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ range-based for
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» for:

for (size_t i = 0; i < vec.size(); i++) {
process(vec[i]);
}

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ range-based for:

for (const auto& elem : vec) {
process(elem);
}

ΠŸΠ»ΡŽΡΡ‹:
βœ… Π£Π»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ
βœ… Π˜Π·Π±Π΅Π³Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… индСксаций
βœ… ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ компилятору ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄



πŸ”„ 4. std::transform вмСсто for
Если Π²Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std::transform:


std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dst(src.size());

std::transform(src.begin(), src.end(), dst.begin(), [](int x) { return x * 2; });

Π—Π°Ρ‡Π΅ΠΌ?
βœ”οΈ Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π·Π° счёт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ
βœ”οΈ Код становится ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Π΅Π΅


🎯 Π’Ρ‹Π²ΠΎΠ΄
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² β€” это Π½Π΅ магия, Π° Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС возмоТностСй C++. Π£Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ лишниС вычислСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ reserve(), примСняйтС range-based for ΠΈ std::transform, ΠΈ ваш ΠΊΠΎΠ΄ станСт быстрСС ΠΈ элСгантнСС.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ std::transform Π² своём ΠΊΠΎΠ΄Π΅? Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях! πŸ‘‡

➑️ @cpp_geek



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

πŸš€ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² C++: малСнькиС хитрости для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… скоростСй

БСгодня ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎΠ± ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² C++. Π”Π°ΠΆΠ΅ Ссли ваш ΠΊΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, это Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстро. Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±Π΅Ρ€Ρ‘ΠΌ нСсколько Ρ‚Ρ€ΡŽΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΆΠ°Ρ‚ΡŒ максимум ΠΈΠ· Ρ†ΠΈΠΊΠ»ΠΎΠ².



πŸ”₯ 1. Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… вычислСний Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ†ΠΈΠΊΠ»Π°
❌ ΠŸΠ»ΠΎΡ…ΠΎ:


for (int i = 0; i < vec.size(); i++) {
process(vec[i]);
}

βœ… Π₯ΠΎΡ€ΠΎΡˆΠΎ:

size_t size = vec.size();
for (size_t i = 0; i < size; i++) {
process(vec[i]);
}

ΠŸΠΎΡ‡Π΅ΠΌΡƒ? vec.size() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒΡΡ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ‡Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, особСнно Ссли это Π½Π΅ std::vector, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.



⚑ 2. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ reserve() для Π²Π΅ΠΊΡ‚ΠΎΡ€Π°
Если Π²Ρ‹ Π·Π°Ρ€Π°Π½Π΅Π΅ Π·Π½Π°Π΅Ρ‚Π΅, сколько элСмСнтов Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π² std::vector, Π²Ρ‹Π·ΠΎΠ²ΠΈΡ‚Π΅ reserve(). Π­Ρ‚ΠΎ сократит количСство Ρ€Π΅Π°Π»Π»ΠΎΠΊΠ°Ρ†ΠΈΠΉ памяти.


std::vector<int> vec;
vec.reserve(1000); // Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅ΠΌ мСсто для 1000 элСмСнтов
for (int i = 0; i < 1000; i++) {
vec.push_back(i);
}




🏎️ 3. ΠŸΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΠΉΡ‚Π΅ range-based for
ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Ρ†ΠΈΠΊΠ» for:

for (size_t i = 0; i < vec.size(); i++) {
process(vec[i]);
}

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΉ range-based for:

for (const auto& elem : vec) {
process(elem);
}

ΠŸΠ»ΡŽΡΡ‹:
βœ… Π£Π»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ
βœ… Π˜Π·Π±Π΅Π³Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Ρ… индСксаций
βœ… ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ компилятору ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄



πŸ”„ 4. std::transform вмСсто for
Если Π²Ρ‹ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std::transform:


std::vector<int> src = {1, 2, 3, 4, 5};
std::vector<int> dst(src.size());

std::transform(src.begin(), src.end(), dst.begin(), [](int x) { return x * 2; });

Π—Π°Ρ‡Π΅ΠΌ?
βœ”οΈ Π Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ быстрСС Π·Π° счёт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ
βœ”οΈ Код становится ΠΊΠΎΡ€ΠΎΡ‡Π΅ ΠΈ Ρ‡ΠΈΡ‚Π°Π±Π΅Π»ΡŒΠ½Π΅Π΅


🎯 Π’Ρ‹Π²ΠΎΠ΄
ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ†ΠΈΠΊΠ»ΠΎΠ² β€” это Π½Π΅ магия, Π° Π³Ρ€Π°ΠΌΠΎΡ‚Π½ΠΎΠ΅ использованиС возмоТностСй C++. Π£Π±ΠΈΡ€Π°ΠΉΡ‚Π΅ лишниС вычислСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ reserve(), примСняйтС range-based for ΠΈ std::transform, ΠΈ ваш ΠΊΠΎΠ΄ станСт быстрСС ΠΈ элСгантнСС.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹ std::transform Π² своём ΠΊΠΎΠ΄Π΅? Π”Π΅Π»ΠΈΡ‚Π΅ΡΡŒ Π² коммСнтариях! πŸ‘‡

➑️ @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/286

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

Dump Scam in Leaked Telegram Chat

A leaked Telegram discussion by 50 so-called crypto influencers has exposed the extraordinary steps they take in order to profit on the back off unsuspecting defi investors. According to a leaked screenshot of the chat, an elaborate plan to defraud defi investors using the worthless β€œ$Few” tokens had been hatched. $Few tokens would be airdropped to some of the influencers who in turn promoted these to unsuspecting followers on Twitter.

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

telegram from tw


Telegram C++ geek
FROM USA