C++ хэлэнд бид өөрсдөө бичих шаардлагагүй хялбарчилсан олон төрлийн өгөгдлийн бүтэц байдаг ба түүний тухай ярилцяа. Эхний ээлжинд тэдгээр нь юу хийдэг ямархуу бүтэцтэй тухай бичих ба цаашдаа бүгдийг нь өөрсдөө кодыг нь бичээд яаж ажилладдаг болхыг нь бичнэ гэж бодож байна.

Array

Array тухай. Array олон зүйлийг багтааж чаддаг сав гэж төсөөлж болноо. Одоогийн байдлаар бид 1 хувьсагчид 1-л утга хадгаж байгаа тэгвэл бидэнд 2000 хувьсагч хадгалах хэрэгтэй болвол яах вэ? Мэдээж 2000 ялгаатай хувьсагч зарлаад байх нь цаг үрсэн ажил билээ. int a[2000] гэдэг нь a гэсэн нэртэй сав ба 2000 ширхэг тоо агуулах боломжтой. Array эхний элемэнтын дугаар гэдэг бол 0 ба тухайн элэмэнтрүү хандахдаа a[INDEX] гэж хандахнээ.

Жишээ нь нэг бодлого бодоцгооё. Орлтонд N болон N ширхэг бүхэл тоонууд өгөгдөх ба эдгээр N тоонуудын нийлбэрийг ол. хязгаарлалт 1 <= N <= 1000.

// Энэ удаад массивын тухай үзэх болно.
#include <iostream> 
using namespace std;

int main() {
	int n; // массивын хэмжээ.
	int i;
	int a[2000]; // Массив. мөн ингэж зарласнаар массивын элемэнтүүд нь random буюу санамсаргүй
				 // зарлагдаж байгаа ба бид анхны утгыг нь мэдэхгүй.

	/* Массив гэдэг нь юу вэ гэвэл ер нь бол олонлог гэсэн үг юм. бидний зарласан
	   a[2000] гэдэг нь a гэсэн нэртэй олонлог 2000 ширхэг тоо агуулах боломжтой гэсэн
	   үг юм. Массивын эхний элемэнтын дугаар гэдэг бол 0 юм.
	   Жишээ нь: 
	   5
	   5 4 -3 2 9 
	   гэсэн оролт бол 5 ширхэг тоо орж ирэх ба эхний мөрөнд массивын хэмжээ буюу массив нь 5 ширхэг элемэнт агуулах юм. 
	   Ер нь бол олонлогийн элемэнтын тоо юм. Дараагийн мөрөндөх тоонууд нь олонлогийн элемэнтүүд юм.
	   a[0] гэдэг бол 5
	   a[1] гэдэг бол 4
	   a[2] гэдэг бол -3
	   a[3] гэдэг бол 2
	   a[4] гэдэг бол 9 болох юм.
	*/
	cin >> n; 	// массивын элемэнтийн тоо буюу хэдэн ширхэг тоо дараа нь орж ирэхийг
			// илэрхийлэх тоог уншиж байгаа юм.
	
	// Одоо бид n ширхэг тоог унших ёстой юм. Эхлээд 0р элемэнтийг дараа нь 1р элемэнтийг
	// дараа нь 2р элемэнтийг дараа нь ... (n-1)-р элемэнтийг уншина.

	for(i = 0; i < n; i++) {
		// Энэ давталт нь 0-ээс эхлээд n-1 хүртэл явна.
		cin >> a[i];
		// Энэд i-р элемэнтийг уншиж байна.
	}
	int sum = 0; // нийлбэрийг sum-д олы.
	for(int i = 0; i < n; i++) {
		sum += a[i]; // sum += a[i] гэдэг нь sum = sum + a[i] ижил.

		// sum нь эхлээд a[0], дараа нь a[1], .... гэх мэт a[n-1] хүртэлх бүх элемэнтийн утгаар
		// нэмэгдэх ёстой. Иймд үүнийг давталт ашиглана.
	}
	cout << sum << endl; // нийлбэрийг хэвлэх.
	return 0;
}

Тэмдэгт мөр

Mэмдэгт мөрийн тухай. Энэ нь тэмдэгтүүдийн array гэсэн үг юм. Өөрөөр хэлбэл char a[2000] гэсэн a нэртэй array нь 2000 ширхэг тэмдэгтийг авж чадна гэсэн утгатай юм. Array-с ялгаагүй болхоор жишээ бодлогоор тайлбарлая. 1 үг өгөгдөх ба бүх үсгийг нь том болгож хэвлэ(ASCII-н тухай бичсэн байгаа)

// Энэ удаад тэмдэг мөр үзэх болно.
#include <iostream>
#include <string.h>	// тэмдэгт мөрдээр хийгдэх үйлдлүүдийг ашиглахыг хүсвэл энэ санг заавал
			// зарлаж өгөх ёстой. Жишээ нь тэмдэгт мөрийн урт гэх мэт функцийг агуулдаг.
using namespace std;

int main() {
	char a[2000];
	cin >> a;	// int array-с давуу талтай нь шууд оролтоор өгсөн тэмдэгт мөрийг унших боломжтой
	int n, i;	// энэ n гэдэг хувьсагч нь тэмдэгт мөрийн уртыг агуулах ба тэмдэгт мөрийн урт нь бүхэл тоогоор илэрхийлэгдэх
			// тул int юм
	n = strlen(a);	// энэ strlen функц нь өгөдсөн тэмдэгт мөрийн уртыг буцаадаг функц юм.
			// бид a[2000] гэж зарласан болхоор энэний урт нь 2000 гэж бодож болох гэхдээ энэ нь
			// 2000 хүртэлх тэмдэгтийг агуулах боломжтой л гэсэн үг юм.
	
	for(i = 0; i < n; i++) {
		if(a[i] >= 'a' && a[i] <= 'z' ) {
			// хэрвээ i-р тэмдэгт нь жижиг үсэг бол
			a[i] -= 32; // зөрүү нь 32 тул хасаад том болголоо
		}
	}
	cout << a << endl; // өөрчлөгдсөн тэмдэгт мөр
	return 0;
}

Vector

vector гэдэг нь хэмжээгээ өөрчилж чаддаг array гэж хэлж болно. Өөрөөр хэлбэл бид int a[2000] гэвэл a гэсэн массив нь 2000 ширхэг л элемэнт агуулах боломжтой юм. гэвч бид 247143 ширхэг элемэнт аль эсвэл 247 ширхэг элемэнт гэх мэт дурын хэмжээтэй мөн яг ямар хэмжээг нь мэдэхгүй тохиолдолд заавал энгийн массивыг int a[3000000] гэж зарлахад хүрнэ. Гэвч бид ердөө 247 ширхэг л тоо хадгалах хэрэгтэй тохиолдолд үлдсэн хэсэг нь ямар ч ашиггүй зүгээр л санах ойд байсаар л байна. Харин vector-ын хувьд бол vector<data_type> v; гэж зарлах ба энэ нь анх хоосон байх ба бид зөвхөн ашиглах элемэнтээ л хийж өгөхөд болно. Мөн vector-т ашиглахад хялбар болгодог олон функц байдаг ба элемэнт устгах мөн элемэнт хүссэн байрлалдаа нэмэх гэх мэт.

  • push_back(elm)- элэмэнт ард нь нэмэх
  • size() - vector-н элэмэнтийн тоо
  • erase(v.begin() + index) - index-дэх элэмэнтийг устгана
  • insert(v.begin() + index, value) - index-дэх байрлалд value-г нэмнэ.
  • clear()- vector-г хоослох

гэх мэт хялбар үйлдлүүдтэй ба Доорх жишээнд хэрхэн ашиглах тухай үзүүлэв


// Энэ удаад vector-ын талаар үзэх болно
#include <iostream>
#include <vector> // vector ашиглахын тулд энэ санг заавал бичнэ
using namespace std; // энэ нь мөн байх ёстой.

int main() {
	vector<int> v; 	// v гэсэн нэртэй вектор нь int буюу бүхэл төрлийн хувьсагч
			// авч чадна гэсэн утгатай. Ингэж зарласан тохиолдолд v гэсэн
			// векторт маань ямар ч элемэнт байхгүй ба хоосон байгаа.

	// Элемэнт нэмэх.
	v.push_back( 247 );	// push_back( утга ) байх ба энэ нь векторт маань элемэнт нэмж байгаа гэсэн үг
				// хамгийн ард талд нь нэмж байгаа.

	// хэвлэх 
	cout << v[0];	// одоо вектор маань хоосон биш болсон тул бид эхний элемэнтийг хэвлэхийг хүсвэл
			// ингэж хэвлэнэ. Мөн адил 0-ээс эхэлж дугаарлана. хэрвээ 3-р элемэнтийг хэвлэххийг
			// хүвсэл v[3] гэхэд л хангаллтай ч бидэнд 3-р элемэнт гэж байхгүй юм. Векторын нэг ашигтай
			// тал нь илүүц хэрэггүй санах ой ашиглахгүй юм

	v.push_back( 1 ); // хамгийн ард 1-ыг нэмж байна.
	v.push_back( 2 ); // хамгийн ард 2-ыг нэмж байна.

	// хэмжээ буюу элемэнтийн тоог мэдэх.
	// бид маш олон тоо нэмсэн байлаа тэгээд одоо вектор нь хэдэн элемэнттэй болсныг мэдэхийг хүсвэл
	int n = v.size(), i; // гэхэд л хангалттай ба векторт байгаа элемэнтийн тоог буцаах болно.

	// бүх элемэнтийг хэвлэж байна.
	for(i = 0; i < n; i++) {
		cout << v[i] << " ";
	}
	cout << endl; 

	// элемэнт устгах.
	// бид 1-р элемэнтийг устгахыг хүсвэл энэ нь их амархан
	v.erase( v.begin()+1 ); // 1-р элемэнтийг устгаж байна

	n = v.size(); // хэмжээ нь 1 элемэнт хассан тул өөрчлөгдөх тул дахин олно.
	// бүх элемэнтийг хэвлэж байна.
	for(i = 0; i < n; i++) {
		cout << v[i] << " ";
	}
	cout << endl;
	// элемэнт нэмэх
	// бид 1-р байрлалд 4 гэсэн тоог нэмэхийг хүсвэл энэ нь их амархан
	v.insert( v.begin()+1, 4 ); // 1р байрлалд 4 гэсэн элемэнтийг нэмлээ
	// бүх элемэнтийг хэвлэж байна.

	n = v.size(); // хэмжээ нь 1 элемэнт нэмсэн тул өөрчлөгдөх тул дахин олно.
	for(i = 0; i < n; i++) {
		cout << v[i] << " ";
	}
	cout << endl;

	// vetor-оо бид хоосон буюу ямар ч элемэнтгүй болгохыг хүсвэл энэ нь их амархан.
	v.clear(); // хоослох.
	return 0;
}

String

String гэж юу вэ? энэ нь хэмжээгээ өөрчилж чаддаг тэмдэгт төрлийн утга авдаг array гэж хэлж болно. char a[2000] гэвэл 2000 хүртэлх л тэмдэгтийг агуулж чадна. Харин string a; гэвэл энэ нь өөрийн уртыг өөрчилж чадна. Санах ойн тухай дараа нь дэлгэрэнгүй ярилцяа.

Мөн ард нь үг нэмэх мөн 2 тэмдэгтийг ижил эсэхийг шалгах гэх мэт үйлдлүүдэд char-ын array-с илүү амар юм. Бид char төрлийн массиваар 2 тэмдэгтийг ижил эсэхийг шалгавал индекс бүр дэх үсэг бүрийг ижил эсэхийг шалгана. Харин string төрөлд бол ТэмдэгтМөр1 == ТэмдэгтМөр2 гэхэд л хангалттай. Мөн ард нь элемэнт нэмэхэд ТэмдэгтМөр = ТэмдэгтМөр + ТэмдэгтМөр1; гэхэд л болно. Жишээ

string a = ""; // хоосон болгох
a = "aBg"; // a гэдэг тэмдэгт мөр aBg болгож байна.
a += "123123"; // 123123 гэсэн тэмдэгт мөрийг нэмж байна.
cout << a[0] << endl; // 0р элемэнтийг хэвлэх.
#include <string> // string ашиглахын тулд энэхүү санг заавал дуудах ёстой.
#include <iostream> 
using namespace std;

int main() {
	string a, b, c; //  string төрлийн a, b, c гэсэн нэртэй тэмдэгт мөрүүд.

	cin >> a; // тэмдэгт мөр унших.
	cin >> b; // тэмдэгт мөр унших.
	// cin >> a >> b; гэж болно. 

	int n, m;
	n = a.size(); // оролтонд өгсөн тэмдэгт мөрийн уртыг буцаана.
	m = b.size(); // оролтонд өгсөн тэмдэгт мөрийн уртыг буцаана.

	cout << "Temdeg Moriin Urtuud ->" << n << " " << m << endl;
	// cout << ""; гэвэл "" доторх тэмдэгтүүд хэвлэгдэнэ.
	// cout << endl; гэдэг нь мөр шилжих. cout << "\n"; гэсэн ч болно.

	c = a + b; // 2 тэмдэгт мөрийг залгаж байна.
	cout << "ZAlgawal ->" << c << endl;

	if( a == b ) cout << "Iher temdegt mor baina\n";
	else cout << "Ooriimbnoo\n";

	return 0;
}

Queue

queue гэж юу вэ гэвэл энэ нь нэгэн төрлийн массив ба энэ нь очиртой адилхан ба түрүүлж орсон нь түрүүлж гарна. Бид үүнд элемэнт нэмж мөн хамгийн урд талын элемэнтийг мэдэж бас устгаж чадах ба эдгээр үйлдлийг 1 үйлдлээр хийдэг. Үүнийг бид вектор ашиглан хийж болох ч хамгийн эхний элемэнтийг устгахад олон үйлдэл хийх болно. хугацааны хувьд удаан. queue-г ашиглах нь бичиглэлийн хувьд илүү амар Саяны бичсэнчлэн бид queue-ын 2 дахь элемэнт 3 гэх элемэнтийг мэдэж чадахгүйг анхаарах хэрэгтэй.

  • push(elm) - хамгийн хойно элэмэнтийг нэмнэ
  • front() - хамгийн урд талын элэмэнтийг буцаана
  • pop() хамгийн урд талын элэмэнтийг хасна
  • size() - элэмэнтийн тоог буцаана
// Queue-ын талаар үзэх болно.
#include <iostream> // cin, cout гэх мэт функцийг агуулдаг сан
#include <queue> // queue-г агуулдаг сан.
using namespace std;

int main() {
	queue <int> q;	// int төрлийн утга авах q гэсэн нэртэй 
					// queue ба анх хоосон байгаа.

	q.push( 12 ); // хамгийн ард нь элемэнт нэмж байна.
	q.push( 23 ); // хамгийн ард нь элемэнт нэмж байна.
	q.push( -2 ); // хамгийн ард нь элемэнт нэмж байна.

	int k = q.front();	// k-д queue байгаа хамгийн урд талын 
						// элемэнтийн утгыг оноож байна.
	
	cout << k << endl; // хэвлэх

	q.pop(); // хамгийн урд талын элемэнтийг устгах.

	k = q.size(); // одоо байгаа элемэнтийн тоо.
	cout << k << endl;

	k = q.front(); 	// k-д queue байгаа хамгийн урд талын 
					// элемэнтийн утгыг оноож байна.

	cout << k << endl;
	return 0;
}

Stack

stack гэж юу вэ гэвэл Queue-н эсрэг буюу түрүүлж орсон нь түрүүлж гарна гэсэн зарчимтай. Бид энэ array-д элемэнт нэмж мөн хамгийн ард талын элемэнтийг устгаж мөн мэдэж чадна. Мөн эдгээр үйлдлийг 1 үйлдлээр хийдэг. бид stack-ын 2 дахь элемэнт 3 гэх мэт элемэнтийг мэдэж чадахгүйг анхаарах хэрэгтэй.

  • push(elm) - хамгийн дээд талд элэмэнтийг нэмнэ
  • top() - хамгийн дээд талын элэмэнтийг буцаана
  • pop() хамгийн дээд талын элэмэнтийг хасна
  • size() - элэмэнтийн тоог буцаана
// Stack-ын талаар үзэх болно.
#include <iostream> // cin, cout гэх мэт функцийг агуулдаг сан
#include <stack> // stack-г агуулдаг сан.
using namespace std;

int main() {
	stack <int> s;	// int төрлийн утга авах s гэсэн нэртэй 
					// stack ба анх хоосон байгаа.

	s.push( 12 ); // хамгийн ард нь элемэнт нэмж байна.
	s.push( 23 ); // хамгийн ард нь элемэнт нэмж байна.
	s.push( -2 ); // хамгийн ард нь элемэнт нэмж байна.
	s.push( 0 ); // хамгийн ард нь элемэнт нэмж байна.

	int k = s.top();	// k-д stack байгаа хамгийн ард талын 
						// элемэнтийн утгыг оноож байна.
	
	cout << k << endl; // хэвлэх

	s.pop(); // хамгийн ард талын элемэнтийг устгах.

	k = s.size(); // одоо байгаа элемэнтийн тоо.
	cout << k << endl;

	k = s.top(); 	// k-д stack байгаа хамгийн ард талын 
					// элемэнтийн утгыг оноож байна.

	cout << k << endl;
	return 0;
}

Set

Set гэдэг нь элемэнтүүдийн эрэмбэлж хадгалдаг бүтэц ба элемэнт нэмэх, устгах гэх мэт үйлдлүүдийн LogN хугацаанд хийдэг мөн давхардлыг арилгадаг(multiset нь арилгахгүй). Цаанаа мод хэлбэрийн бүтэц ашигладаг тул бид 3-р элемэнтийг мэдэж чадахгүй юм. Давуу тал нь юу вэ?

  • set-д element байгаа эсэхийг Log(n) үйлдлээр олж чадна. Vector-ч юмуу өөр бүтэц бол бид элэмэнт бүрээр гүйх шаардлагатай
    • lower_bound(elm) - elm-с их буюу тэнцүү хамгийн эхний байрлалыг буцаана
    • upper_bound(elm) - elm-с эрс их хамгийн эхний байрлалыг буцаана
  • Бид set-с element хасахдаа мөн Log(n)
    • erase(elm) - elm-с устгах
  • Бид set-д element нэмэхэд мөн Log(n)
    • insert(elm) - elm-г нэмэх

Доор жишээ кодоор харуулав

// set-ын талаар үзэх болно.
#include <set> // set-ын функцууд агуулдаг сан
#include <iostream>
using namespace std;

int main() {
	set<int> s; // int төрлийн утга авлаг set анх хоосон байгаа
	set<int>::iterator it; // int төрлийн утга авдаг set-ын заагч

	s.insert( 222 ); // set-д элемэнт нэмэх
	s.insert( 111 ); // set-д элемэнт нэмэх

	for( it = s.begin(); it != s.end(); it++) {
		// set-д байгаа бүх элемэнтийг хэвлэж байна
		cout << *it << " ";
		// it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
		// тавьж мэднэ
	}

	cout << "\n----------------------------------\n";
	
	int n = s.size(); // одоо байгаа элемэнтийн хэмжээ
	cout << n << endl;

	cout << "----------------------------------\n";

	s.insert( 111 ); // энэ элемэнт байгаа тул хэмжээ өөрчлөгдөхгүй
	n = s.size();
	cout << n << endl;
	cout << "----------------------------------\n";

	s.insert( 22 );
	s.insert( 12 );
	
	for( it = s.begin(); it != s.end(); it++) {
		// set-д байгаа бүх элемэнтийг хэвлэж байна
		cout << *it << " ";
		// it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
		// тавьж мэднэ
	}
	cout << "\n----------------------------------\n";

	s.erase( 22 );	// 22 гэсэн элемэнтийг устгаж байна
					// хэрвээ байхгүй бол юуг ч устгахгүй
	for( it = s.begin(); it != s.end(); it++) {
		// set-д байгаа бүх элемэнтийг хэвлэж байна
		cout << *it << " ";
		// it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
		// тавьж мэднэ
	}
	cout << "\n----------------------------------\n";

	it = s.lower_bound( 12 );// 12-оос их буюу тэнцүү хамгийн бага
							// элемэнтийн байрлалыг буцаана. Хэрвээ
							// бүх элемэнт 12 бага бол size буюу
							// төгсгөлийн буцаана.
	cout << *it << "\n----------------------------------\n";

	it = s.upper_bound( 12 ); // 12-оос эрс их  хамгийн бага
							// элемэнтийн байрлалын буцаана. Хэрвээ
							// бүх элемэнт 12 бага бол size буюу
							// төгсгөлийн буцаана.
	cout << *it << "\n----------------------------------\n";

	s.erase( it ); // it-ын зааж байгаа элемэнтийг устгана.
	for( it = s.begin(); it != s.end(); it++) {
		// set-д байгаа бүх элемэнтийг хэвлэж байна
		cout << *it << " ";
		// it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
		// тавьж мэднэ
	}
	cout << "\n----------------------------------\n";
	return 0;
}

Priority Queue

Priority queue гэдэг нь хамгийн их утгатай элемэнтийг хамгийн эхэнд нь хадгалдаг бүтэц ба бид үүнийг set-р хийж болношүүдээ. Давуу тал нь гэвэл хамгийн их element-г мэдэхэд 1-л үйлдэл хийнэ. Энэ нь эрэмбэлдэг гэсэн үг биш ба heap гэсэн өгөгдлийн төрөл юм.

  • push(утга) - утгыг нэмэх. (элемэнт нэмэх)
  • pop() - хамгийн их элемэнтийг устгах.
  • top() - хамгийн их элемэнтийн утгыг буцаана.
  • size() - элемэнтийн хэмжээ.
  • empty() - хоосон бол 1 үгүй бол 0 гэсэн утгыг буцаана. (True or False)
// priority_queue
#include <iostream>
#include <queue> // priority_queue агуулж буй сан
using namespace std;

int main() {
	priority_queue <int> pq; 	// int төрлийн утга авдаг
								// priority_queue (анх хоосон)

	pq.push( 3 ); // 3 гэсэн элемэнтийг нэмж өгж байна.

	cout << pq.top() << endl; 	// одоогийн байдлаар хамгийн их
								// элемэнтийг хэвлэж байна.
	cout << "-------------------------------------------\n";

	pq.push( 4 ); // 4 гэсэн элемэнтийг нэмж өгж байна.

	cout << pq.top() << endl; 	// одоогийн байдлаар хамгийн их
								// элемэнтийг хэвлэж байна.
	cout << "-------------------------------------------\n";

	pq.push( 2 ); // 2 гэсэн элемэнтийг нэмж өгж байна.

	cout << pq.top() << endl; 	// одоогийн байдлаар хамгийн их
								// элемэнтийг хэвлэж байна.
	cout << "-------------------------------------------\n";

	pq.pop();
	cout << pq.top() << endl; 	// одоогийн байдлаар хамгийн их
								// элемэнтийг хэвлэж байна.
	cout << "-------------------------------------------\n";

	pq.pop();
	cout << pq.top() << endl; 	// одоогийн байдлаар хамгийн их
								// элемэнтийг хэвлэж байна.
	cout << "-------------------------------------------\n";

	cout << pq.size() << endl; // одоо байгаа элемэнтийн хэмжээг хэвлэхы

	return 0;
}

Map

Map гэж юу вэ? гэвэл энэ нь key-р хайж, хадгалж болдог өгөгдлийн төрөл билээ. Бид array ашиглахад index буюу натурал тоогоор л хайж байгаа. Харин map-ын хувьд бид өөсрдөө нэрийнхээ төрлийг өгдөг нь хамгийн гол зүйл юм. map<int,int> m; гэсэн тохиолдолд int төрлийн нэртэй хувьсагч int төрлийн утга авах юм. Харин map<string,int> m; гэвэл string төрлийн нэртэй хувьсагч int төрлийн утга авах юм. Харин үүнийг заадаг заагч байх ба түүнийг iterator гэнэ.

// Map-ын талаар үзэх болно.

#include <iostream> // cin, cout гэх мэт функцийг агуулдаг сан
#include <map> // map агуулдаг сан.
using namespace std;

int main() {
	map<string, int> m; // зарлах
	map<string, int>:: iterator it; // map-ын iterator зарлах.

	m[ "Luuwan" ] = 1;
	m[ "Toms" ] = 22;

	for( it = m.begin(); it != m.end(); it++) {
		// бид элемэнт бүрээр эхнээс нь гүйхийн тулд iterator ашиглах
		// хэрэгтэй. Тэгээд энэ нь эхлэлээс төгслгөл хүртэл гүйж байна.
		cout << it->first << " " << it->second << endl;
		// Хэвлэхдээ it->first гэвэл нэр буюу key, it->second гэвэл утгыг
		// хэвлэнэ.
	}
	cout << "----------------------------------------------------\n";
	string st = "";
	st = "Luuwan";

	m[ st ] += 100;

	for( it = m.begin(); it != m.end(); it++) {
		// бид элемэнт бүрээр эхнээс нь гүйхийн тулд iterator ашиглах
		// хэрэгтэй. Тэгээд энэ нь эхлэлээс төгслгөл хүртэл гүйж байна.
		cout << it->first << " " << it->second << endl;
		// Хэвлэхдээ it->first гэвэл нэр буюу key, it->second гэвэл утгыг
		// хэвлэнэ.
	}
	cout << "----------------------------------------------------\n";
	st = "Toms";
	cout << m[ st ] << endl;
	return 0;
}

Дүгнэлт

C++ байдаг өгөгдлийн төрлүүдийн тухай бичлээ. Цаашдаа эдгээрийг хэрхэн ашиглах, цаанаа ямархуу байдлаар бичигдсэн талаар бичих болно.