tg-me.com/cpp_geek/286
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