Ээм

C ++ Standard List Insert () Мисалдары

Автор: Laura McKinney
Жаратылган Күнү: 10 Апрель 2021
Жаңыртуу Күнү: 12 Май 2024
Anonim
Автоматический календарь-планировщик смен в Excel
Видео: Автоматический календарь-планировщик смен в Excel

Мазмун

Мен инженер-программистмин. Мен 15 жылдан бери C ++, MFC жана .net технологиялары менен иштейм. Мага видео оюндар жана китеп окуган жагат.

1. Кириш сөз

The "insert ()" стандарттуу тизменин функциясы бар тизмеге жаңы элементтерди киргизүү үчүн колдонулат. Жаңы элементти киргизүүдө, биз анын ордун жана маанисин көрсөтүшүбүз керек. Бул жерде ар бир ашыкча жүктөмдүн мисалын бир-бирден көрөбүз.

2. Ушул статьянын функцияларын колдоо

Биздин мисалга өтүүдөн мурун, ушул мисал боюнча колдонула турган эки жардамчы функцияны карап көрөлү. Add_ListElements () функциясы тизмеге демейки элементтерди кошуу үчүн жазылган. Бул тизмеге 1,2,3,4,5,6 кошот. Төмөндө функциясы келтирилген.

Listing 1.1

// ListInsert 01: List void Add_ListElements тизмесине айрым баалуулуктарды түртүү функциясы (listint> & listParam) {listParam.clear (); listParam.push_back (1); listParam.push_back (2); listParam.push_back (3); listParam.push_back (4); listParam.push_back (5); listParam.push_back (6); }

Print_List () функциясы берилген тизме аркылуу кайталанып, мазмунун консоль чыккан терезеге басып чыгарат. Төмөндө функциясы келтирилген.


Listing 1.2

// ListInsert 02: List in Values ​​Print void Print_List (listint> listParam) {listint> :: iterator listItr; printf (" nТизмелердин мазмуну: n"); for (listItr = listParam.begin (); listItr! = listParam.end (); listItr ++) printf ("[% d]", * listItr); }

3. Тизмеге бир элемент киргизүү

Тизмеге бир элементти киргизүү үчүн, insert функциясынын төмөндө көрсөтүлгөн ашыкча жүктөмүн колдонушубуз керек:

iterator insert (const_iterator _Кайда, _Ty && _Val)

Бул жерде, "_Where" параметри жаңы элементтин киргизилишин күтүп жатат. Экинчи параметр _Val - биз киргизгибиз келген маани. Эми ушул кодду карап көрүңүз.

Listing 1.3

//3.1 Тизме жана итераторлордун тизмесин түзүү> theList; Add_ListElements (theList); Print_List (theList); //3.2 Intertion lister үчүн итераторду жайгаштырыңыз> :: iterator Position; Позиция = theList.begin (); Position ++; Position ++; //3.3 Элементти киргизип, printf тизмесин басып чыгарыңыз (" nБир элементти киргизгенден кийин,"); Позиция = theList.insert (Позиция, 7); Print_List (theList);

3.1деги коддо биз тизмени түзүп, ага Add_ListElements () (Listing 1.1) функциясын чакырып, ага алты демейки элементти коштук. Андан кийин биз тизменин мазмунун басып чыгардык.


3.2 кодундагы begin () функциясын чакырып, тизме үчүн итераторду алдык жана көбөйтүү операциясын ++ аткарып, кадамдар менен эки жолу жылдырдык. Эми, кайталоочу үчүнчү элементти көрсөтүп жатат. Бул төмөндөгү сүрөттө көрсөтүлгөн.

3.3тө көрсөтүлгөн коддо биз insert функциясын позицияны жана маанини берүү менен чалып жатабыз, ал 7. Чакыруу учурдагы абалда жаңы элемент кошуп, калган элементтерди анын оң жагына жылдырат. Жогорудагы сүрөттө жаңы салынган элемент жашыл, ал эми жылдырылган элементтер сары түс менен көрсөтүлгөн.

4. Бир нече элементти киргизүү

Стандарттуу тизменин insert функциясы үч параметр ага бир нече элементтерди киргизет деп күтөт. Биринчи параметр тизмедеги ордун кыстаруу башталган жерден билдирет. Экинчи параметр элементтерди кантип киргизүү керектигин айтат. Үчүнчү параметр - бул киргизилиши керек болгон чыныгы маани. Төмөнкү сүрөттө биринчи параметр катары берилген позицияга 11 маанидеги үч элементти киргизүү көрсөтүлгөн.


Көңүл бургула, биз бир нече баалуулуктарды киргизсек дагы, бардык баалуулуктар бирдей жана тизмедеги жанаша жайгашкан. Эми төмөндөгү коддун үлгүсүн карап көрүңүз.

Listing 1.4

//3.4 Учурдагы абалдан бир нече элементтерди кыстарыңыз printf (" nҮч элементти киргизгенден кийин (Val 11),"); Позиция = theList.insert (Позиция, 3, 11); Print_List (theList);

Үчүнчү сапка биз 11 маанидеги 3 элементти киргизип жатабыз. Кийинки сапта биз тизмени консоль чыгаруу терезесине чыгарып жатабыз. Бул киргизүү төмөндө көрсөтүлгөндөй сүрөттөлгөн.

Чакыруу киргизилгенге чейин, "Позиция" итератору 7-элементте (тизмедеги үчүнчү позиция) жайгашкандыгын эске алыңыз. Киргизүүгө чакыруудан кийин, ушул абалда үч элемент кошулуп, бар болгон элементтер, анын ичинде 7 солго жылдырылат. Жаңы кошулган элементтер жашыл түстө, ал эми жылышкан элементтер сары түстө көрсөтүлөт.

5. Тизмектин арасына элементтерди көчүрүү

Стандарттуу тизме киргизүү ыкмасын колдонуп, тизме элементтерин башка тизмеден көчүрүп алсаңыз болот. Функциянын параметрлер тизмеси төмөндө көрсөтүлгөн.

Биринчи параметр "Позиция" баруучу тизмедеги көчүрмө ордун билдирет. Экинчи жана үчүнчү параметр булактар ​​тизмесинен баштоо жана аяктоо абалын билдирет жана бул булактан көздөгөн жерге кандай элементтердин көчүрүлүшүн көрсөтөт. Эми, төмөнкү кодексти карап көрүңүз.

Listing 1.5

//3.5 Элементтерди башка тизмеден кыстаруу (Көчүрүү) //3.5.1 Булактар ​​Тизмесин түзүп, Итератор // позиция тизмесин орнотуу> SecondList; Add_ListElements (SecondList); listint> :: iterator Start = SecondList.begin (); listint> :: iterator End = SecondList.end (); Start ++; Start ++; End--; End--;

Бул жерде биздин мисал үчүн булактардын тизмеси даярдалган. 4,5-сапта тизме түзүлүп, ага 1,2,3,4,5,6 демейки элементтери кошулат. 6 жана 7-саптарда биз тизменин аягына жана аягына чейин көрсөтүлүүчү тизменин итераторун кармадык. 8-11-сапта, башталгыч жана аяктоочу итератордун ордун экинчи орунга койдук, ошондо көздөгөн тизмеге эки гана элемент көчүрүлдү.

Эми "SecondList" тизмесиндеги элементтердин көчүрмөсүн алган төмөнкү кодду караңыз.

Listing 1.6

//3.5.2 Булак элементтерин көздөгөн Position ++ көчүрүп алуу; theList.insert (Position, Start, End); printf (" nЭлементтерди Экинчи Тизмеге киргизгенден кийин,"); Print_List (theList);

Итераторду учурдагы абалынан бир элемент (2-сап) жылдыргандыгыбызга көңүл буруңуз. Мурунку сүрөттү караңыз, азыр позиция тизмедеги төртүнчү элементти көрсөтүп турат деп айта алабыз. 3-сапта биз булактан көздөгөнгө чейин көчүрмөсүн аткарган insert функциясын атадык. Бул төмөндө сүрөттөлгөн.

Тизме элементтери көчүрүлүп алынгандан кийин, көздөлгөн тизменин мазмуну консоль чыгаруу терезесинде басылып чыгат. Толук мисал жана анын натыйжасы төмөндө көрсөтүлгөн.

Толтурулган мисал

#include stdio.h> #include conio.h> #include list> ат мейкиндигин колдонуу менен std; // ListInsert 01: List void Add_ListElements тизмесине айрым баалуулуктарды түртүү функциясы (listint> & listParam) {listParam.clear (); listParam.push_back (1); listParam.push_back (2); listParam.push_back (3); listParam.push_back (4); listParam.push_back (5); listParam.push_back (6); } // ListInsert 02: List in Values ​​Print List in void Print_List (listint> listParam) {listint> :: iterator listItr; printf (" nТизмелердин мазмуну: n"); for (listItr = listParam.begin (); listItr! = listParam.end (); listItr ++) printf ("[% d]", * listItr); } // ListInsert 03: Тизмени Remove_if жана Predicates аркылуу тазалоо void main () {//3.1 Тизме жана итераторлор тизмесин түзүү> theList; Add_ListElements (theList); Print_List (theList); //3.2 Intertion lister үчүн итераторду жайгаштырыңыз> :: iterator Position; Позиция = theList.begin (); Position ++; Position ++; //3.3 Элементти киргизип, printf тизмесин басып чыгарыңыз (" nБир элементти киргизгенден кийин,"); Позиция = theList.insert (Позиция, 7); Print_List (theList); //3.4 Учурдагы абалдан бир нече элементтерди кыстарыңыз printf (" nҮч элементти киргизгенден кийин (Val 11),"); Позиция = theList.insert (Позиция, 3, 11); Print_List (theList); //3.5 Элементтерди башка тизмеден кыстаруу (Көчүрүү) //3.5.1 Булактар ​​Тизмесин түзүп, Итератор // позиция тизмесин орнотуу> SecondList; Add_ListElements (SecondList); listint> :: iterator Start = SecondList.begin (); listint> :: iterator End = SecondList.end (); Start ++; Start ++; End--; End--; //3.5.2 Булак элементтерин көздөгөн Position ++ көчүрүү; theList.insert (Position, Start, End); printf (" nЭлементтерди Экинчи Тизмеге киргизгенден кийин,"); Print_List (theList); _getch (); }

Бул макала так жана автордун билими боюнча туура. Мазмун маалыматтык же көңүл ачуу максатында гана иштелип чыккан жана ишкердик, каржылык, юридикалык жана техникалык маселелерде жеке кеңеш же кесипкөй кеңеш менен алмаштырылбайт.

Сайтка Популярдуу

Сиз Үчүн Макалалар

6 Вольт Батарейка жөнүндө суроолор
Өнөр Жайлык

6 Вольт Батарейка жөнүндө суроолор

Тамара Вилхит - техникалык жазуучу, өнөр жай инженери, эки баланын энеси жана илимий-фантастикалык жана үрөй учурган автор.Төмөндө, сиз төмөнкү суроолорго жооп таба аласыз:Мага канча 6 вольттук батаре...
PS4 контроллерун компьютерге / ноутбукка кантип туташтыруу керек
Ээм

PS4 контроллерун компьютерге / ноутбукка кантип туташтыруу керек

Cheeky Kid - Интернетте отуруп, чексиз маалыматты түшүнүп, көңүл ачып, көңүл ачып, көп убакытты сарптаган кибернаут.Бул сценарийди элестетип көрсөңүз:Жаңы эле ойгонуп, компьютериңизде бир күн бою оюн ...