Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ динамичСскими структурами Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ массивов, Π³Π΄Π΅ ΠΌΡ‹ скованы Π΅Π³ΠΎ Π·Π°Π΄Π°Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ динамичСски Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ Π½ΠΎΠ²Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅.

Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ

Ряд Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ.

emplace(pos, value) : вставляСт элСмСнт value Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ pos

insert(pos, value) : вставляСт элСмСнт value Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ pos, Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ emplace

insert(pos, n, value) : вставляСт n элСмСнтов value начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ pos

insert(pos, begin, end) : вставляСт начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ pos, элСмСнты ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ begin ΠΈ end

insert(pos, values) : вставляСт список Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ начиная с ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ pos

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов

Если Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ всС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ clear :

Ѐункция pop_back() удаляСт послСдний элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π°:

erase(p) : удаляСт элСмСнт, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ p. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° элСмСнт, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ послС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ, ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ссли ΡƒΠ΄Π°Π»Π΅Π½ послСдний элСмСнт

erase(begin, end) : удаляСт элСмСнты ΠΈΠ· Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°, Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ begin ΠΈ end. Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π½Π° элСмСнт, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ послС послСднСго ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠ³ΠΎ, ΠΈΠ»ΠΈ Π½Π° ΠΊΠΎΠ½Π΅Ρ† ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ссли ΡƒΠ΄Π°Π»Π΅Π½ послСдний элСмСнт

Π Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ size() ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ empty() ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, ΠΏΡƒΡ‚ΠΎΠΉ Π»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€:

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ resize() ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π­Ρ‚Π° функция ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ Ρ„ΠΎΡ€ΠΌΡ‹:

resize(n) : оставляСт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ n ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнтов. Если Π²Π΅ΠΊΡ‚ΠΎΡ€ содСрТит большС элСмСнтов, Ρ‚ΠΎ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ усСкаСтся Π΄ΠΎ n элСмСнтов. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° мСньшС n, Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ элСмСнты ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ

resize(n, value) : Ρ‚Π°ΠΊΠΆΠ΅ оставляСт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ n ΠΏΠ΅Ρ€Π²Ρ‹Ρ… элСмСнтов. Если Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° мСньшС n, Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ элСмСнты со Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ value

Π’Π°ΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ resize ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌΠΈ всС ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ ссылки Π½Π° элСмСнты.

ИзмСнСниС элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

Ѐункция assign() позволяСт Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ всС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ:

Π’ Π΄Π°Π½Π½ΠΎΠΌ случаС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π·Π°ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… строк «Sam».

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ²

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² осущСствляСтся Π½Π° основании сравнСния ΠΏΠ°Ρ€ элСмСнтов Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ позициях. Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Ρ€Π°Π²Π½Ρ‹, Ссли ΠΎΠ½ΠΈ содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ элСмСнты Π½Π° Ρ‚Π΅Ρ… ΠΆΠ΅ позициях. Π˜Π½Π°Ρ‡Π΅ ΠΎΠ½ΠΈ Π½Π΅ Ρ€Π°Π²Π½Ρ‹:

Ѐункция Vector Erase () Π² C++

Массив ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для хранСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ количСство элСмСнтов массива Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ Π²ΠΎ врСмя выполнСния. Π­Ρ‚Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Π΅ΠΊΡ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠ°ΠΊ динамичСский массив. Π’ классС Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для добавлСния ΠΈ удалСния элСмСнта ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Ѐункция erase () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π²ΠΎ врСмя выполнСния, Ρ‡Ρ‚ΠΎ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. ИспользованиС этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±Ρ‹Π»ΠΎ объяснСно Π² этом руководствС.

Бинтаксис:

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° синтаксиса этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ функция erase () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΎΠ½Π° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° элСмСнт, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт послСдний ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт.

Π’Ρ‹ΡˆΠ΅ΡƒΠΏΠΎΠΌΡΠ½ΡƒΡ‚Π°Ρ функция erase () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° основС ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ, ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΌ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ… этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ условия:

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ этого руководства, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, установлСн Π»ΠΈ компилятор g ++ Π² систСмС. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ Visual Studio Code, установитС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ для компиляции исходного ΠΊΠΎΠ΄Π° C ++ ΠΈ создания исполняСмого ΠΊΠΎΠ΄Π°. Π—Π΄Π΅ΡΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Visual Studio Code Π±Ρ‹Π»ΠΎ использовано для компиляции ΠΈ выполнСния ΠΊΠΎΠ΄Π° C ++. НиТС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase () для вставки элСмСнта (ΠΎΠ²) Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 1: ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт element

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» C ++ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π’ ΠΊΠΎΠ΄Π΅ использован Π²Π΅ΠΊΡ‚ΠΎΡ€ строковых Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. ЗначСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π±Ρ‹Π»ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½Ρ‹ Π΄ΠΎ ΠΈ послС удалСния ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase () с ΠΎΠ΄Π½ΠΈΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠΌ.

using namespace std ;

//Display the values of the vector

void display_vector ( vector string > fruits )

//Initialize the counter

//Iterate and print the elements of the vector using loop

//Check the elements is the last element or not

//Increment the counter by 1

//Declare a vector of string data

//Print the existing values of the vector

cout Β«The values of the vector before remove: Β« endl ;

//Remove the first element from the vector

fruits. erase ( fruits. begin ( ) ) ;

//Print the existing values of the vector after remove

cout Β« \n The values of the vector after remove: Β« endl ;

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ появится послС выполнСния Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2: Π£Π΄Π°Π»ΠΈΡ‚ΡŒ нСсколько элСмСнтов

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» C ++ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ нСсколько элСмСнтов ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase (). Π’ ΠΊΠΎΠ΄Π΅ использован Π²Π΅ΠΊΡ‚ΠΎΡ€ цСлочислСнных Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° для установки Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° элСмСнтов, ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Ѐункция erase () использовалась с двумя ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌΠΈ для удалСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

using namespace std ;

//Display the vector

void display_vector ( vector int > nums )

//Print the values of the vector using loop

//Declare a vector of integer data

//Print the existing values of the vector

cout Β«The values of the vector before remove: Β« endl ;

//Declare two iterators to remove the range of elements from the vector

vector int > :: iterator startEle, endEle ;

//Set the iterator to the first position

startEle = intArray. begin ( ) ;

//Increment the starting iterator by 2

advance ( startEle, 2 ) ;

//Set the iterator to the last position

endEle = intArray. end ( ) ;

//Decrement the ending iterator by 3

advance ( endEle, β€” 3 ) ;

//Remove the range of elements

intArray. erase ( startEle, endEle ) ;

//Print the existing values of the vector after remove

cout Β« \n The values of the vector after remove: Β« endl ;

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ появится послС выполнСния Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’ соотвСтствии с Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ элСмСнты с 3-ΠΉ ΠΏΠΎ 7-ю ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 3: Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» C ++ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase (). Π’ ΠΊΠΎΠ΄Π΅ объявлСн Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ· 7 цСлочислСнных элСмСнтов. Π—Π°Ρ‚Π΅ΠΌ Ρ†ΠΈΠΊΠ» for использовался для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ удалСния ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Ρ‚Π΅Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ дСлятся Π½Π° 5.

using namespace std ;

//Declare a vector of integer data

cout Β«The values of the vector before remove: \n Β« ;

for ( int const & i : numbers ) <

//Remove the numbers from the vector those are not divisible by 5

//Check the number is divisible by 5 or not

//Remove the element based on the iterator

numbers. erase ( ele β€” ) ;

cout Β«The values of the vector after remove: \n Β« ;

for ( int const & i : numbers ) <

Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²Ρ‹Π²ΠΎΠ΄ появится послС выполнСния Π²Ρ‹ΡˆΠ΅ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π°. Π’Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚, Ρ‡Ρ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ элСмСнты, ΠΊΡ€Π°Ρ‚Π½Ρ‹Π΅ 5, Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты Π±Ρ‹Π»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase () для удалСния Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Ρ… элСмСнтов. Π’ C ++ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для удалСния элСмСнта ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΈ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ элСмСнту Π·Π° Ρ€Π°Π·. Но ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½Ρ‹Π΅, Ρ‚Π°ΠΊ ΠΈ мноТСствСнныС элСмСнты ΠΈΠ· любой ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΡƒΠ΄Π°Π»Π΅Π½Ρ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ vector erase ().

How do I remove an item from a stl vector with a certain value?

I was looking at the API documentation for stl vector, and noticed there was no method on the vector class that allowed the removal of an element with a certain value. This seems like a common operation, and it seems odd that there’s no built in way to do this.

12 Answers 12

Trending sort

Trending sort is based off of the default sorting method β€” by highest score β€” but it boosts votes that have happened recently, helping to surface more up-to-date answers.

It falls back to sorting by highest score if no posts are trending.

Switch to Trending sort

std::remove does not actually erase elements from the container: it moves the elements to be removed to the end of the container, and returns the new end iterator which can be passed to container_type::erase to do the actual removal of the extra elements that are now at the end of the container:

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

If you want to remove an item, the following will be a bit more efficient.

or you may avoid overhead of moving the items if the order does not matter to you:

Use the global method std::remove with the begin and end iterator, and then use std::vector.erase to actually remove the elements.

Thanks to Jim Buck for pointing out my error.

From c++20:

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

The other answers cover how to do this well, but I thought I’d also point out that it’s not really odd that this isn’t in the vector API: it’s inefficient, linear search through the vector for the value, followed by a bunch of copying to remove it.

If you’re doing this operation intensively, it can be worth considering std::set instead for this reason.

C++ community has heard your request πŸ™‚

C++ 20 provides an easy way of doing it now. It gets as simple as :

Not only will it remove all elements of the value (here ‘0’), it will do it in O(n) time complexity. Which is the very best you can get.

If your compiler does not support C++ 20, you should use erase-remove idiom:

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

A shorter solution (which doesn’t force you to repeat the vector name 4 times) would be to use Boost:

See also std::remove_if to be able to use a predicate.

Here’s the example from the link above:

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Two ways are there by which you can use to erase an item particularly. lets take a vector

1) Non efficient way : Although it seems to be quite efficient but it’s not because erase function delets the elements and shifts all the elements towards left by 1. so its complexity will be O(n^2)

output of the remove algorithm is :

as return type of remove is iterator to the new end of that range.

Now use vector’s erase function to delete elements from the new end to old end of the vector. It requires O(1) time.

so this method work in O(n)

std::vector :: erase

Compiler support
Freestanding and hosted
Language
Standard library headers
Named requirements
Feature test macros (C++20)
Language support library
Concepts library (C++20)
Metaprogramming library (C++11)
Diagnostics library
General utilities library
Strings library
Containers library
Iterators library
Ranges library (C++20)
Algorithms library
Numerics library
Localizations library
Input/output library
Filesystem library (C++17)
Regular expressions library (C++11)
Concurrency support library (C++11)
Technical specifications
Symbols index
External libraries

Erases the specified elements from the container.

Invalidates iterators and references at or after the point of the erase, including the end() iterator.

The iterator first does not need to be dereferenceable if first==last : erasing an empty range is a no-op.

Contents

[edit] Parameters

positerator to the element to remove
first, lastrange of elements to remove
Type requirements

[edit] Return value

Iterator following the last removed element.

If pos refers to the last element, then the end() iterator is returned.

If last==end() prior to removal, then the updated end() iterator is returned.

If [first, last) is an empty range, then last is returned.

[edit] Exceptions

[edit] Complexity

Linear: the number of calls to the destructor of T is the same as the number of elements erased, the assignment operator of T is called the number of times equal to the number of elements in the vector after the erased elements

Класс vector

Класс Π²Π΅ΠΊΡ‚ΠΎΡ€Π° стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++ β€” это шаблон класса для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ. Π’Π΅ΠΊΡ‚ΠΎΡ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ элСмСнты Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π² Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΌ располоТСнии ΠΈ обСспСчиваСт быстрый случайный доступ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ элСмСнту. Π’Π΅ΠΊΡ‚ΠΎΡ€ являСтся ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, Ссли ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ случайного доступа находится Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ «ΠŸΡ€Π΅ΠΌΠΈΡƒΠΌ».

Бинтаксис

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Type
Π’ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… элСмСнтов, сохраняСмых Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Для Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² врСмя выполнСния вставок ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΉ элСмСнтов Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся постоянной Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ. ВрСмя вставки ΠΈ удалСния элСмСнтов Π² сСрСдинС Π²Π΅ΠΊΡ‚ΠΎΡ€Π° мСняСтся Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ deque класса быстрСС выполняСтся ΠΏΡ€ΠΈ вставкС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΊΠΎΠ½Ρ†Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ list класса быстрСС выполняСтся ΠΏΡ€ΠΈ вставкС ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π² любом располоТСнии Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° происходит, ΠΊΠΎΠ³Π΄Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-Ρ‡Π»Π΅Π½Ρƒ трСбуСтся ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° свСрх Π΅Π³ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Смкости. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вставки ΠΈ стирания ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ адрСса хранСния Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ. Π’ΠΎ всСх Ρ‚Π°ΠΊΠΈΡ… случаях ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈΠ»ΠΈ ссылки, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Π½Π° измСнившиСся части ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, становятся Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ. Если Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ Π½Π΅ происходит, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΈ ссылки ΠΏΠ΅Ρ€Π΅Π΄ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ вставки ΠΈΠ»ΠΈ удалСния.

Π§Π»Π΅Π½Ρ‹

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€Ρ‹

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡ Ρ‚ΠΈΠΏΠΎΠ²

ИмяОписаниС
[allocator_type] (#allocator_type)Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ класс allocator для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.
const_iteratorΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
const_pointerΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
const_referenceΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ссылку Π½Π° const элСмСнт, хранящийся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для чтСния ΠΈ выполнСния const ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.
const_reverse_iteratorΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
difference_typeΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρƒ адрСсами Π΄Π²ΡƒΡ… элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
iteratorΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ любой элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
pointerΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
referenceΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ссылку Π½Π° элСмСнт, хранящийся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
reverse_iteratorΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ любой элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
size_typeΠ’ΠΈΠΏ, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ количСство элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.
value_typeΠ’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹

ИмяОписаниС
operator[]Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.
operator=ЗамСняСт элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

allocator_type

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ класс распрСдСлитСля для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ использования allocator_type см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ get_allocator.

assign

УдаляСт Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ элСмСнты Π² пустой Π²Π΅ΠΊΡ‚ΠΎΡ€.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

first
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

last
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

count
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠΎΠΏΠΈΠΉ элСмСнта, вставляСмых Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

value
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, вставляСмого Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

init_list
ΠžΠ±ΡŠΠ΅ΠΊΡ‚ initializer_list, содСрТащий вставляСмыС элСмСнты.

Remarks

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, assign удаляСт всС ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅. assign Π—Π°Ρ‚Π΅ΠΌ Π»ΠΈΠ±ΠΎ вставляСт ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ элСмСнтов ΠΈΠ· исходного Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² Π²Π΅ΠΊΡ‚ΠΎΡ€, Π»ΠΈΠ±ΠΎ вставляСт ΠΊΠΎΠΏΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ элСмСнта значСния Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° элСмСнт Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

position
НомСр Π½ΠΈΠΆΠ½Π΅Π³ΠΎ индСкса ΠΈΠ»ΠΈ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ элСмСнта, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ ссылка Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылка Π½Π° элСмСнт, индСкс ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡƒΠΊΠ°Π·Π°Π½ Π² Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π΅. Если position Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° большС, at Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° послСдний элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ПослСдний элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Если Π²Π΅ΠΊΡ‚ΠΎΡ€ пуст, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

Remarks

ΠŸΡ€ΠΈ компиляции с использованиСм _ITERATOR_DEBUG_LEVEL 1 ΠΈΠ»ΠΈ 2 Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка срСды выполнСния ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ элСмСнту Π² пустом Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

begin

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

capacity

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ число элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π±Π΅Π· выдСлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ пространства.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ВСкущая Π΄Π»ΠΈΠ½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

cbegin

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Remarks

const Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт послС послСднСго элСмСнта Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Remarks

cend ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΎΡˆΠ΅Π» Π»ΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Π΅Ρ† Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ cend Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сравнСния.

clear

ΠžΡ‡ΠΈΡ‰Π°Π΅Ρ‚ элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

const_iterator

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ const_iterator нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния значСния элСмСнта.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

const_pointer

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ const_pointer нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния значСния элСмСнта.

Для доступа ΠΊ элСмСнту Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ iterator.

const_reference

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ссылку Π½Π° const элСмСнт, хранящийся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅. Он ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для чтСния ΠΈ выполнСния const ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ.

Remarks

Π’ΠΈΠΏ const_reference нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния значСния элСмСнта.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

const_reverse_iterator

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой элСмСнт const Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ const_reverse_iterator Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

crbegin

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ константный ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ vector ΠΈΠ»ΠΈ Π°Π΄Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΠΉ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ послСдним элСмСнтом Π² Π½Π΅Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΠΌΠΎΠΌ vector Π²ΠΈΠ΄Π΅.

Remarks

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ crbegin vector ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

crend

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ const ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт послС послСднСго элСмСнта ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ const ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΌ для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° элСмСнт, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π·Π° послСдним элСмСнтом ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ совпадаСт с элСмСнтом ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом Π½Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎΡ‚ элСмСнт являСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сравнСния.

Remarks

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ crend (подходящСС ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½ΠΈΠ΅) vector Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΎ.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ crend Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сравнСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

difference_type

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, ΡΡΡ‹Π»Π°ΡŽΡ‰ΠΈΠΌΠΈΡΡ Π½Π° элСмСнты Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈ Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

difference_type Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ число элСмСнтов ΠΌΠ΅ΠΆΠ΄Ρƒ двумя указатСлями, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт содСрТит Π΅Π³ΠΎ адрСс.

Для доступа ΠΊ элСмСнту Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ iterator.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

emplace

ВставляСт элСмСнт, созданный Π½Π° мСстС, Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

position
ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Π² vector мСстС вставки ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта.

args
АргумСнты конструктора. Ѐункция опрСдСляСт ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ конструктора, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π½Π° основС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Remarks

Π›ΡŽΠ±Π°Ρ опСрация вставки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дорогостоящСй, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ vector с классом для обсуТдСния vector ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

emplace_back

ДобавляСт элСмСнт, созданный Π½Π° мСстС, Π² ΠΊΠΎΠ½Π΅Ρ† Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

args
АргумСнты конструктора. Ѐункция опрСдСляСт ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΡƒ конструктора, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ, Π½Π° основС ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

empty

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡΠ΅Ρ‚, пуст Π»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

true if the vector is empty; false if the vector isn’t empty.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт послС послСднСго элСмСнта Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

erase

УдаляСт элСмСнт ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

position
ПолоТСниС элСмСнта, удаляСмого ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

first
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта, удаляСмого ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

last
ПолоТСниС послС послСднСго элСмСнта, удаляСмого ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, ΠΎΡΡ‚Π°Π²ΡˆΠΈΠΉΡΡ послС ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов, ΠΈΠ»ΠΈ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΊΠΎΠ½Ρ†Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ссли Ρ‚Π°ΠΊΠΎΠ³ΠΎ элСмСнта Π½Π΅ сущСствуСт.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

front

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Бсылка Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Если Π²Π΅ΠΊΡ‚ΠΎΡ€ пуст, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ.

Remarks

ΠŸΡ€ΠΈ компиляции с использованиСм _ITERATOR_DEBUG_LEVEL 1 ΠΈΠ»ΠΈ 2 Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка срСды выполнСния ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ элСмСнту Π² пустом Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

get_allocator

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ копию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° allocator, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ для создания Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.

Remarks

РаспрСдСлитСли для класса Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚, ΠΊΠ°ΠΊ этот класс управляСт Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ΠΌ. РаспрСдСлитСлСй ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² классах ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² стандартной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ C++ достаточно для Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π° Π·Π°Π΄Π°Ρ‡ программирования. НаписаниС ΠΈ использованиС собствСнного класса распрСдСлитСля β€” это Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Π°Ρ функция C++.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

insert

ВставляСт элСмСнт, мноТСство элСмСнтов ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

position
ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅, ΠΊΡƒΠ΄Π° вставляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

value
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта, вставляСмого Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

count
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов, вставляСмых Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

first
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

last
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта послС Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Π”Π²Π΅ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ insert Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ вставки Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π² Π²Π΅ΠΊΡ‚ΠΎΡ€.

Remarks

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² качСствС прСдусловия first ΠΈ last Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ. Π›ΡŽΠ±Π°Ρ опСрация вставки ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ дорогостоящСй, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ vector с классом для обсуТдСния vector ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

iterator

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ любой элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ iterator ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния значСния элСмСнта.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

max_size

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Максимально возмоТная Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

operator[]

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ссылку Π½Π° элСмСнт Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π² ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

position
ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ элСмСнта Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

Если заданная позиция большС ΠΈΠ»ΠΈ Ρ€Π°Π²Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½.

Remarks

ΠŸΡ€ΠΈ компиляции с использованиСм _ITERATOR_DEBUG_LEVEL 1 ΠΈΠ»ΠΈ 2 Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка срСды выполнСния ΠΏΡ€ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ΅ доступа ΠΊ элСмСнту Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свСдСния см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ «ΠŸΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹».

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

operator=

ЗамСняСт элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

pointer

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° элСмСнт Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ pointer ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для измСнСния значСния элСмСнта.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

pop_back

УдаляСт элСмСнт Π² ΠΊΠΎΠ½Ρ†Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° см. Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ vector::push_back().

push_back

ДобавляСт элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ† Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

value
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π½Π°Π·Π½Π°Ρ‡Π°Π΅ΠΌΠΎΠ΅ элСмСнту, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСтся Π² ΠΊΠΎΠ½Π΅Ρ† Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

rbegin

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ ΠΈΠ»ΠΈ Π½Π° послСдний элСмСнт Π² исходном Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

reference

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ссылку Π½Π° элСмСнт, хранящийся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° элСмСнт послС послСднСго элСмСнта ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ послСднСго ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Он ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° элСмСнт послС послСднСго элСмСнта ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ совпадаСт с элСмСнтом ΠΏΠ΅Ρ€Π΅Π΄ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ элСмСнтом Π½Π΅Π²Π΅Ρ€Π½ΡƒΡ‚ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎΡ‚ элСмСнт являСтся Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π΅ΠΌ ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Π°Π½. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сравнСния.

Remarks

rend ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ с ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ end ΠΈ с Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ.

rend ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, достиг Π»ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ†Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ rend Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Ρ‹ΠΌΠ΅Π½ΠΎΠ²Ρ‹Π²Π°Π½ΠΎ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΅Π³ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для сравнСния.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

reserve

Π Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΏΡ€ΠΈ нСобходимости выдСляя пространство.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

count
Минимальная Π΄Π»ΠΈΠ½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, выдСляСмого для Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

resize

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

new_size
Новый Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

value
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² Π²Π΅ΠΊΡ‚ΠΎΡ€, Ссли Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ большС исходного. Если Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΠΏΡƒΡ‰Π΅Π½ΠΎ, Π½ΠΎΠ²Ρ‹Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ конструктор ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Remarks

size ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

reverse_iterator

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ³ΠΎ доступа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ любой элСмСнт Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

Π’ΠΈΠΏ reverse_iterator ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ прохоТдСния Ρ‡Π΅Ρ€Π΅Π· Π²Π΅ΠΊΡ‚ΠΎΡ€ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ сторону.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

shrink_to_fit

УдаляСт лишнюю Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ количСство элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅

ВСкущая Π΄Π»ΠΈΠ½Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

size_type

Π’ΠΈΠΏ, ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‰ΠΈΠΉ количСство элСмСнтов Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

ΠœΠ΅Π½ΡΠ΅Ρ‚ мСстами элСмСнты Π΄Π²ΡƒΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ².

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

value_type

Π’ΠΈΠΏ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, хранящихся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

Remarks

ΠŸΡ€ΠΈΠΌΠ΅Ρ€

vector

Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΈΠ»ΠΈ элСмСнты ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ значСния. Или ΠΊΠ°ΠΊ копия всСго ΠΈΠ»ΠΈ части Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. НСкоторыС ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠ·ΠΊΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹

allocator
Класс распрСдСлитСля для использования с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ. get_allocator Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ класс распрСдСлитСля для ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

count
ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ элСмСнтов Π² создаваСмом Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

value
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов Π² создаваСмом Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅.

source
Π’Π΅ΠΊΡ‚ΠΎΡ€, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ создаваСмый Π²Π΅ΠΊΡ‚ΠΎΡ€ станСт ΠΊΠΎΠΏΠΈΠ΅ΠΉ.

first
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

last
ПолоТСниС ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ элСмСнта Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… элСмСнтов.

init_list
Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΠΉ initializer_list элСмСнты для копирования.

Remarks

ВсС конструкторы хранят ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ распрСдСлитСля ( allocator ) ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€.

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° конструктора ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ пустой исходный Π²Π΅ΠΊΡ‚ΠΎΡ€. Π’Ρ‚ΠΎΡ€ΠΎΠΉ конструктор явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Ρ‚ΠΈΠΏ распрСдСлитСля ( allocator ).

Π’ΠΎΡΡŒΠΌΠΎΠΉ конструктор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ initializer_list, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ элСмСнты.

ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ () ΠΈ ΠΎΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ () Π² C ++

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ динамичСским массивам с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ автоматичСского измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΏΡ€ΠΈ вставкС ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнта, ΠΏΡ€ΠΈ этом ΠΈΡ… Ρ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ автоматичСски обрабатываСтся ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠΌ.

Π²Π΅ΠΊΡ‚ΠΎΡ€ :: ясно ()

Ѐункция clear () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния всСх элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Π΅Ρ‚ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 0.
Бинтаксис:

Ошибки ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

1. НС ΠΈΠΌΠ΅Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ.
2. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΎΡˆΠΈΠ±ΠΊΡƒ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°.

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° CPP для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ
// РСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ clear ()
#include
#include

using namespace std;

vector int > myvector;

// Π’Π΅ΠΊΡ‚ΠΎΡ€ становится 1, 2, 3, 4, 5

// Π²Π΅ΠΊΡ‚ΠΎΡ€ становится пустым

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: O (N)
ВсС элСмСнты ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½Ρ‹ ΠΎΠ΄ΠΈΠ½ Π·Π° Π΄Ρ€ΡƒΠ³ΠΈΠΌ.

Π²Π΅ΠΊΡ‚ΠΎΡ€ :: Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ ()

Ѐункция erase () ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния элСмСнтов ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈΠ»ΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°.

Бинтаксис:

Ошибки ΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ

1. Π£ Π½Π΅Π³ΠΎ Π½Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ броска Π±Π΅Π· ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ, Ссли позиция Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°.
2. ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° CPP для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ
// Ρ€Π°Π±ΠΎΡ‚Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase ()
#include
#include

using namespace std;

vector int > myvector< 1, 2, 3, 4, 5 >;

vector int >::iterator it;

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° CPP для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ
// РСализация Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase ()
#include
#include

using namespace std;

vector int > myvector< 1, 2, 3, 4, 5 >;

vector int >::iterator it1, it2;

заявка
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠ² список Ρ†Π΅Π»Ρ‹Ρ… чисСл, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ всС Ρ‡Π΅Ρ‚Π½Ρ‹Π΅ элСмСнты ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ Π½Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°ΠΉΡ‚Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€.

Алгоритм
1. ЗапуститС Ρ†ΠΈΠΊΠ» Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.
2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, дСлится Π»ΠΈ элСмСнт Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° 2, Ссли Π΄Π°, ΡƒΠ΄Π°Π»ΠΈΡ‚Π΅ элСмСнт ΠΈ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚Π΅ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€.
3. НапСчатайтС ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€.

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° CPP для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ
// ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ erase ()
#include
#include

using namespace std;

Π‘Π»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ: O (N) Π² Ρ…ΡƒΠ΄ΡˆΠ΅ΠΌ случаС, ΠΊΠΎΠ³Π΄Π° 1-ΠΉ элСмСнт удаляСтся, Π° O (1) Π² Π»ΡƒΡ‡ΡˆΠ΅ΠΌ случаС, ΠΊΠΎΠ³Π΄Π° послСдний элСмСнт удаляСтся.

clear () ΠΏΡ€ΠΎΡ‚ΠΈΠ² erase (), ΠΊΠΎΠ³Π΄Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ?

clear () удаляСт всС элСмСнты ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ€Π°Π²Π΅Π½ 0. ВсС элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ clear ().
Ѐункция erase (), с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для удалСния ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈΠ»ΠΈ ряда элСмСнтов ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‚Π΅ΠΌ самым ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π½Π° количСство ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… элСмСнтов.

BestProg

ΠŸΠ΅Ρ€Π΅Π΄ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π΅ΠΌΡ‹ рСкомСндуСтся ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ‚Π΅ΠΌΠΎΠΉ:

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Поиск Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… рСсурсах:

здСсь T – Ρ‚ΠΈΠΏ элСмСнтов Π²Π΅ΠΊΡ‚ΠΎΡ€Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

здСсь T – Ρ‚ΠΈΠΏ элСмСнтов массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

здСсь T – Ρ‚ΠΈΠΏ элСмСнтов массива.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

ΠœΠ΅Ρ‚ΠΎΠ΄ swap() ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΎΠ±ΠΌΠ΅Π½Π° Π΄Π²ΡƒΡ… Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² мСстами. Π’ΠΈΠΏΡ‹ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ. ΠžΠ±Ρ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° объявлСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

5. ΠŸΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅ массивов. ΠŸΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ =

ΠŸΡ€ΠΈΠΊΠ»Π°Π΄.

Вторая рСализация ΠΈΠΌΠ΅Π΅Ρ‚ синтаксис:

Π’ этой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ возвращаСтся ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ исходного массива.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ insert() обСспСчиваСт нСсколько разновидностСй вставки ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов Π² массив. КаТдая Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°.

7.1. Вставка списка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€

ΠŸΡ€ΠΈ этом способС вставки объявлСниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° insert() ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° вставки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

7.2. Вставка элСмСнта Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π· Π² Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ

Данная рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° позволяСт Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ элСмСнт Π² Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π·Π°Π΄Π°Π½Π½ΠΎΠ΅ количСство Ρ€Π°Π·

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

7.3. Вставка ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ элСмСнта Π² Π·Π°Π΄Π°Π½Π½ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ

Для вставки ΠΎΠ΄ΠΈΠ½ΠΎΡ‡Π½ΠΎΠ³ΠΎ элСмСнта Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° insert()

Данная Ρ„ΠΎΡ€ΠΌΠ° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ вставки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

7.4. Вставка Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… элСмСнтов ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°

Для вставки Π³Ρ€ΡƒΠΏΠΏΡ‹ элСмСнтов ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ массива, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π΄Π°Π½Ρ‹ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Ρ„ΠΎΡ€ΠΌΠ° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° insert()

ΠœΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π½Π° ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ вставки.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠœΠ΅Ρ‚ΠΎΠ΄ assign() позволяСт ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ массив ΠΈΠ· ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ массива ΠΈΠ»ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠœΠ΅Ρ‚ΠΎΠ΄ assign() ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ.

ΠŸΠ΅Ρ€Π²Π°Ρ рСализация позволяСт ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ массив ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ значСниями

Вторая рСализация позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ массив ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Бинтаксис объявлСния Ρ‚Π°ΠΊΠΎΠΉ Ρ„ΠΎΡ€ΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° assign() ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ

Π’Ρ€Π΅Ρ‚ΡŒΡ рСализация позволяСт ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ массив ΠΈΠ· списка ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° stl с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ?

Π― просматривал Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ API для Π²Π΅ΠΊΡ‚ΠΎΡ€Π° stl ΠΈ Π·Π°ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ Π² классС Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволял Π±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈ каТСтся странным, Ρ‡Ρ‚ΠΎ для этого Π½Π΅Ρ‚ встроСнного способа.

std::remove Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ стираСт элСмСнт ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π΄Π°Π½ container_type::erase для Π Π•ΠΠ›Π¬ΠΠžΠ“Πž удалСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ находятся Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π² элСмСнт, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»Π΅Π΅ эффСктивным.

ΠΈΠ»ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Ρ… расходов Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ², Ссли порядок для вас Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ значСния:

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ std :: remove с ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π°Ρ‡Π°Π»Π° ΠΈ ΠΊΠΎΠ½Ρ†Π°, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ std :: vector.erase для фактичСского удалСния элСмСнтов.

Бпасибо Π”ΠΆΠΈΠΌΡƒ Π‘Π°ΠΊΡƒ Π·Π° ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° мою ΠΎΡˆΠΈΠ±ΠΊΡƒ.

Π’ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΡ‚Π²Π΅Ρ‚Π°Ρ… рассказываСтся, ΠΊΠ°ΠΊ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ, Π½ΠΎ я ΠΏΠΎΠ΄ΡƒΠΌΠ°Π», Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‡Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ странно, Ρ‡Ρ‚ΠΎ этого Π½Π΅Ρ‚ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π½ΠΎΠΌ API: это нСэффСктивный Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ поиск ΠΏΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρƒ для значСния, Π·Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ слСдуСт ΠΊΡƒΡ‡Π° копирования, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ.

Если Π²Ρ‹ выполняСтС эту ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ интСнсивно, ΠΏΠΎ этой ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ std :: set.

Из c ++ 20 :

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎ ссылкС Π²Ρ‹ΡˆΠ΅:

БообщСство C ++ ΡƒΡΠ»Ρ‹ΡˆΠ°Π»ΠΎ ваш запрос πŸ™‚

C ++ 20 прСдоставляСт простой способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это сСйчас. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто:

Он Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ всС элСмСнты значСния (здСсь ‘0’), Π½ΠΎ ΠΈ сдСлаСт это Π·Π° O (n) Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ слоТности. Π­Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ.

Если ваш компилятор Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ C ++ 20, Π²Π°ΠΌ слСдуСт ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄ΠΈΠΎΠΌΡƒ удалСния-удалСния :

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±Π΅Π· ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… услуг, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅:

Π•ΡΡ‚ΡŒ Π΄Π²Π° способа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π² частности, ΡΡ‚Π΅Ρ€Π΅Ρ‚ΡŒ элСмСнт. возьмСм Π²Π΅ΠΊΡ‚ΠΎΡ€

1) НСэффСктивный способ: хотя ΠΎΠ½ каТСтся довольно эффСктивным, Π½ΠΎ это Π½Π΅ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ функция стирания удаляСт элСмСнты ΠΈ сдвигаСт всС элСмСнты Π²Π»Π΅Π²ΠΎ Π½Π° 1., поэтому Π΅Π³ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ O (n ^ 2)

Π²Ρ‹Π²ΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° удалСния:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ стирания Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнты ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π° Π΄ΠΎ старого ΠΊΠΎΠ½Ρ†Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. Π­Ρ‚ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ O (1).

поэтому этот ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π·Π° O (n)

Π’Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ Π² C++: для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚! Π”ΠΎ этого дня ΠΌΡ‹ использовали чистыС массивы. ЧистыС β€” это Π·Π½Π°Ρ‡ΠΈΡ‚ простыС массивы, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ Ρƒ сСбя Π² Π±Π°Π³Π°ΠΆΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π’ этом ΡƒΡ€ΠΎΠΊΠ΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠΉΠ΄Π΅ΠΌ нСчистыС массивы β€” Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹.

Быстрый ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΏΠΎ ΡΡ‚Π°Ρ‚ΡŒΠ΅:

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° cΠ§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ (vector)

Π’Π΅ΠΊΡ‚ΠΎΡ€ β€” это структура Π΄Π°Π½Π½Ρ‹Ρ…, которая ΡƒΠΆΠ΅ являСтся модСлью динамичСского массива.

Π”Π°Π²Π°ΠΉΡ‚Π΅ вспомним ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для создания динамичСского массива (Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ) Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструктором new ΠΈ Π²Π΄ΠΎΠ±Π°Π²ΠΎΠΊ указатСлями. Но Π² случаС с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ всСго этого Π΄Π΅Π»Π°Ρ‚ΡŒ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.
Π’ΠΎΠΎΠ±Ρ‰Π΅, ΠΏΠΎ стандарту ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ динамичСским массивом Ρ‡Π΅Ρ€Π΅Π· конструктор new β€” Π½Π΅ Π΅ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΡƒΡ‚Π΅Ρ‡ΠΊΠΈ памяти.

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ (vector) Π² C++

ΠšΡΡ‚Π°Ρ‚ΠΈ, сСйчас ΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π½ΠΎ шаблон Π²Π΅ΠΊΡ‚ΠΎΡ€Π°. НапримСр, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ»ΠΈ стСк, Π½Π΅ созданныС с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массива ΠΈΠ»ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, Ρ‚ΠΎΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹ΠΌΠΈ.

Π”Π°Π»Π΅Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±ΡŠΡΠ²ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ конструкциСй Π½ΠΈΠΆΠ΅:

Π’ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Π²Ρ‹ΡˆΠ΅ ΠΌΡ‹ создали Π²Π΅ΠΊΡ‚ΠΎΡ€ строк.

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы ΠΌΡ‹ ΠΏΡ€ΠΎΠΉΠ΄Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ β€” Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π²Π΅ΠΊΡ‚ΠΎΡ€Π°). ДСлаСтся это Ρ‚Π°ΠΊΠΆΠ΅ просто, ΠΊΠ°ΠΊ ΠΈ Π² массивах. Π’ΠΎΡ‚ Ρ‚Π°ΠΊ:

ПослС ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ставим Π·Π½Π°ΠΊ равСнства ΠΈ скобки, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€ΠΎΠ±Π΅Π» ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов.

Π’Π°ΠΊΠΎΠΉ способ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² C++!

Π’Ρ‚ΠΎΡ€ΠΎΠΉ способ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ ячСйкС

Но Π² C++ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ способ это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ благодаря Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ β€” at(). Π’ скобках ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ индСкс Ρ‚ΠΎΠΉ ячСйки, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ.

Π’ΠΎΡ‚ ΠΊΠ°ΠΊ ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

Π”Π°Π²Π°ΠΉΡ‚Π΅ запустим эту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ:

Как ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ количСство ячССк для Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

Π£ΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ. МоТно это ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΡ€ΠΈ Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ…ΠΎΡ‚ΡŒ Π² самом ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ΠΎΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, способ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Π»ΠΈΠ½Ρƒ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° стартС:

Π’Π°ΠΊ Π² ΠΊΡ€ΡƒΠ³Π»Ρ‹Ρ… скобках () послС ΠΈΠΌΠ΅Π½ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ Π΄Π»ΠΈΠ½Ρƒ. А Π²ΠΎΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΉ способ:

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΉ вопрос:»А Π² Ρ‡Π΅ΠΌ Ρ€Π°Π·Π½ΠΈΡ†Π°?Β». Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим Π΄Π²Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΡƒΠΊΠ°ΠΆΠ΅ΠΌ ΠΈΡ… количСство ячССк.

Как Π²ΠΈΠ΄ΠΈΠΌ, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ случаС ΠΌΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ Ρ‚Ρ€ΠΈ нуля, Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ: 17, 0, 0.

ВсС ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ использовании ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ способа всС ячСйки автоматичСски заполнились нулями.

ΠŸΡ€ΠΈ объявлСнии Ρ‡Π΅Π³ΠΎ-Π»ΠΈΠ±ΠΎ (массива, Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ Ρ‚.Π΄) ΠΌΡ‹ выдСляСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство ячССк памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠΆΠ΅ хранится Π½Π΅Π½ΡƒΠΆΠ½Ρ‹ΠΉ для ПК мусор. Π’ нашСм случаС этим мусором ΡΠ²Π»ΡΡŽΡ‚ΡΡ числа.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Π²Ρ‹Π²Π΅Π»ΠΈ Π²Ρ‚ΠΎΡ€ΠΎΠΉ Π²Π΅ΠΊΡ‚ΠΎΡ€, Π² Π½Π΅ΠΌ ΡƒΠΆΠ΅ Π½Π°Ρ…ΠΎΠ΄ΠΈΠ»ΠΈΡΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹Π΅ числа β€” 17, 0, 0. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС. ΠœΠΎΠΆΠ΅Ρ‚Π΅ кстати ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΠΈ вывСсти Π΅Π΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

НуТно ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ! ΠŸΡ€ΠΈ использовании Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ способа Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ плюс β€” ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’Π°ΠΊ ΠΊΠ°ΠΊ для ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ способа компилятор Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ врСмя, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС ячСйки нулями.

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c Как ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

Если Π² сСрСдинС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π°ΠΌ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° массива, ΠΌΡ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ†ΠΈΠΊΠ» for ΠΈ ΠΏΠΎΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠΌ всС элСмСнты.

Π’Π΅ΠΊΡ‚ΠΎΡ€ снова Π½Π° шаг Π²ΠΏΠ΅Ρ€Π΅Π΄ΠΈ! Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΌ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ Π΄Π²Π° Π²Π΅ΠΊΡ‚ΠΎΡ€Π°, потрСбуСтся ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ всСго лишь ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ вСтвлСния if.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнтов ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π°

Π― Ρ…ΠΎΡ‡Ρƒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° стирания. Но ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° здСсь Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ гарантируСтся, Ρ‡Ρ‚ΠΎ элСмСнт встрСчаСтся Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ нСсколько Ρ€Π°Π·, ΠΈ ΠΌΠ½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΡ… всС. Мой ΠΊΠΎΠ΄ выглядит ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊ:

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Π΄Π°Π΅Ρ‚ сбой, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ я измСняю ΠΊΠΎΠ½Π΅Ρ† Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π²ΠΎ врСмя ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π½Π΅ΠΌΡƒ. Как Π»ΡƒΡ‡ΡˆΠ΅ всСго этого Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ? Π’.Π΅. Π΅ΡΡ‚ΡŒ Π»ΠΈ способ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π±Π΅Π· ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΈΠ»ΠΈ создания Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°?

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ remove сТимаСт элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΡ‚ значСния, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ( number_in ) Π² Π½Π°Ρ‡Π°Π»Π΅, vector ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ элСмСнту послС этого Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°. Π—Π°Ρ‚Π΅ΠΌ erase удаляСт эти элСмСнты (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ).

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Π’Ρ‹Π·ΠΎΠ² erase ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π°Π½Π½ΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ:

Или Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std :: remove_if вмСстС с Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€ΠΎΠΌ ΠΈ std :: vector :: erase:

ВмСсто написания собствСнного Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Π° Π² этом случаС Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ std :: remove :

Π’ C ++ 11 Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ лямбда вмСсто Ρ„ΡƒΠ½ΠΊΡ‚ΠΎΡ€Π°:

Π’ C ++ 17 станда :: ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ :: Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ ΠΈ станд :: ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ :: erase_if Ρ‚Π°ΠΊΠΆΠ΅ доступны, Π² C ++ 20 это (Π½Π°ΠΊΠΎΠ½Π΅Ρ†) ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π» Π² стандС :: Π‘Ρ‚ΠΈΡ€Π°Π½ΠΈΠ΅ ΠΈ станд :: erase_if ( ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π² Π’ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ Studio 2019 Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ языка C ++ Π½Π° послСднюю ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ для ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ):

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ доступ ΠΊ индСксу,

Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС Ρƒ вас Π½Π΅Ρ‚ аннулирования ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ O (n), ΠΊΠΎΠ΄ ΠΎΡ‡Π΅Π½ΡŒ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½Ρ‹ΠΉ, ΠΈ Π²Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ классы, хотя Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях использованиС Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… классов ΠΌΠΎΠΆΠ΅Ρ‚ принСсти ΠΏΠΎΠ»ΡŒΠ·Ρƒ Π² Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΌ ΠΊΠΎΠ΄Π΅.

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ erase ΠΌΠ΅Ρ‚ΠΎΠ΄, Π½ΠΎ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ Π²Π°ΡˆΡƒ Π·Π°Π΄Π°Ρ‡Ρƒ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ чистый stl, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ (это ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΎΡ‚Π²Π΅Ρ‚ ΠœΠΎΡ‚Ρ‚ΠΈ):

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c. Π€ΠΎΡ‚ΠΎ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт ΠΈΠ· Π²Π΅ΠΊΡ‚ΠΎΡ€Π° c

Π’ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹ это Π΄Π΅Π»Π°Π΅Ρ‚Π΅, использованиС std :: set ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π»ΡƒΡ‡ΡˆΠ΅, Ρ‡Π΅ΠΌ std :: vector.

Π­Ρ‚ΠΎ позволяСт ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ элСмСнту Π²ΡΡ‚Ρ€Π΅Ρ‡Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·. Если Π²Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ Π΅Π³ΠΎ нСсколько Ρ€Π°Π·, Π² любом случаС Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр. Π­Ρ‚ΠΎ сдСлаСт ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ стирания Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ стирания Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠ΅Π½ΡŒΡˆΡƒΡŽ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ, Ρ‡Π΅ΠΌ Π² Π²Π΅ΠΊΡ‚ΠΎΡ€Π΅, ΠΎΠ΄Π½Π°ΠΊΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ элСмСнтов Π² Π½Π°Π±ΠΎΡ€ происходит ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, поэтому это Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ большим прСимущСством.

Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ сработаСт, Ссли вас интСрСсуСт, сколько Ρ€Π°Π· элСмСнт Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ваш Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΠ»ΠΈ порядок добавлСния элСмСнтов.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ:

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *