Программалау оқулық Алматы, 012 Қазақстан Республикасы Білім жəне ғылым министрлігінің «Оқулық»



Pdf көрінісі
бет463/642
Дата30.03.2022
өлшемі3,66 Mb.
#29231
түріПрограмма
1   ...   459   460   461   462   463   464   465   466   ...   642
Байланысты:
pavlovskaia-jogargy-dengeili

Т & operator[](const Key & х);

Бұл операцияның көмегімен элементтердің мəнін алып қана қоймай, соны-

мен қатар сөздікке жаңа мəндерді қосуға болады. Дəстүрлерден бас тартпай, 

сөздікке мысал ретінде телефондық кітапшаны келтірейік, мұнда кілт ретінде 

адамдардың тегі, ал элемент ретінде олардың телефон нөмірі алынады:

#include

#include  

#include  

#include using namespace std;

typedef map > map_sl; // 1 

int main(){

 map_sl 

m1;

 ifstream 

in("phonebook"); 

 string 

str; 

 long 

num;

 

while (in >> num, !in.eof()){    // Нөмірді оқу

 

   in.get(); 

                // Бос орынды қалдыру

 

   getline(in, str);             // Тегін оқу

 

   m1[str] = num; 

                // Сөздікке енгізу

 

   cout << str << " " << num << endl;

 

}

 

m1["Petya P."] = 2134622; 

    // Сөздікті толықтыру

 

map_sl :: iterator i;

 

cout << "m1:" << endl;           // Сөздікті шығару



344

 

for (i = m1.begin(); i != m1.end(); i++)

 

cout << (*i).fi rst << " " << (*i).second << endl;

 

i = m1.begin(); i++; 

    // Екінші элементті шығару

 

cout << "Екінші элемент: ";

 

cout << (*i).fi rst << " " << (*i).second << endl;

 

cout << "Vasia: " << m1["Vasia"] << endl; 

 

// Элементті кілті бойынша шығару 

 return 

0;

}

Программаның оқылуын жақсарту үшін сөздік типінің қысқаша белгіленуі 

енгізілген (

// 1

 түрінде белгіленген оператор). Əрбір адам туралы мəліметтер 



phonebook

 файлының бір жолында орналасқан: алдымен телефон нөмірі, 

одан кейін бос орын арқылы адамның аты-жөні жазылады:

1001002 Petya К.

3563398 Ivanova N.M.

1180316 Vovochka

2334476 Vasia

Сөздіктің итераторлары үшін инкремент жəне декремент операцияларын 

қолдануға болады, бірақ 

+

 жəне 


 операцияларына тыйым салынған. Төменде 

программа жұмысының нəтижиесі көрсетілген (сөздіктің сұрыпталып реттел-

ген түрде шығарылатынына назар аударыңыз):



Petya K.  1001002 

Ivanova N.M.  3563398 

Vovochka  1180316 

Vasia  2334476 

m1:

Ivanova N.M.  3563398

Petya K.  1001002

Petya P.  2134622

Vasia  2334476

Vovochka  1180316

Екінші элемент: Petya K.  1001002

Vasia:  2334476

Сөздікте элементтерді іздеу үшін төмендегі функциялар анықталған:



iterator        fi nd(const key_type& x);

const_iterator  fi nd(const key_type& x) const; 

iterator        lower_bound(const key_type& x);

const_iterator  lower_bound(const key_type& x) const; 

iterator        upper_bound(const key_type& x);

const_iterator  upper_bound(const key_type &x) const; 

size_type       count(const key_type& x) const;


345

Іздеу сəтті орындалған жағдайда 



fi nd

 функциясы табылған элементке ите-

раторды немесе кері жағдайда 

end()

 мəнін қайтарады.

Келесі 

upper_bound

 функциясы итераторды кілті х шамасынан кіші бол-

майтын алғашқы элементке қайтарады, ондай элемент жоқ болса, 

end()

мəнін 


қайтарады (егер

 х

 кілті бар элемент сөздікте бар болса, сол элементке итера-

тор қайтарылады).

Ал 




Достарыңызбен бөлісу:
1   ...   459   460   461   462   463   464   465   466   ...   642




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет