-
..
, ,
..., . ..
, ,
__________________________________________________
2012
һ
( ӻ)
: , , , , . , , .
-111 _____________
, ,
( , )
__________________ 26 .,_ 9, __________________
_____________________________ 0. _________________________
_____________________________________________
________
________________________________________
... ..
, ,
.. , ,
.
1. .....6
1.1. 6
1.2. ........6
1.3. .....6
2 7
2.1 充..............7
2.1.1 STL...7
2.1.2. ....8
2.1.3. ..12
2.1.4. 13
2.1.5..15
2.1.6 .....16
2.1.7 . . ....17
2.2. ....18
2.2.1 - ...18
2.2.2 - .....19
2.2.3 ...20
2.2.4 .24
3. ..............26
4. .... .27
++ - , , - , , , , , , () , . , , . C++ , . - C, - - .
|
|
, C++ . , , , , , (). C++, , . , x86 GCC, Visual C++, Intel C++ Compiler, Embarcadero (Borland) C++ Builder . C++ , Java C#.
C++ C. C. , C++ C; , C, C++, , C.
1.1
++ . . - (STL). .
1.2
(STL) ++ .
1.3
:
1) ;
2) ;
3) ;
4) ;
5)
6) ;
2.1
2.1.1 STL
STL . , . (, , ). , , C++ . , STL . STL , , . STL , . , , , . STL . -. , . , STL . -, . (, , .) : . , , . STL, . , .
|
|
2.1.2
, . (..1). , vector , deque , list . (sequence containers), STL - . STL (associative containers), .
, /. map. /, . .
.1-
, . . , , . . , , . , , . , , , . , , - , , . STL vector. . , , . , , , - , . . STL , . . . , , LIFO ( ). , . , , FIFO ( ): , . , , . , . , , , .
. , . , . , . ( ), , . , . STL : . , , . , . , , . , , - , . , , . , person, . name. , ( person name). , , int, . , , , , , (), . . : () . , . , , , . , . . , , , , . , , .
|
|
2.1.3
(allocator). . allocator, , . .
. , - deque. - : template <class T, class Allocator = allocator<T> > class deque T , deque. , deque, Allocator; - . , . , .
|
|
2.1.4
, . , . (..2)
.2-
, , . , . . , , . , , , . , . , ->, ++, *, == !=. , * . , ->, +, ++, -, --, *, <, >, <=, >=, -=, +=, ==,!= []. * . , , (..3).
.3-
(..4).
.4-
2.1.5
. , , , , . .
:
find ()- , .
count()-, .
sort()- .
search()- , , .
merge()- , , .
for_each ()- . , , . , .
transform()- - , ( ). , c , , .
2.1.6
STL , . , .
.
push_front(), front() pop_front() pop_back() .
2.1.7 . .
, , . , . - , []. . ( ) . , , , .
:
push_back() -
size() - , .
swap() - ,
back() -
insert - : .
erase() -
|
|
, , . STL .
2.2
2.2.1 -
.5--
2.2.2 -
.6 -
2.2.3
#include <iostream>
#include <conio.h>
#include <vector>
using namespace std;
class Adventures_of_SIB
{
public:
char naimenovanie_tyra[30];
char familia_klienta[30];
int stoimost_1_dnia_poezdki;
int kolichestvo_dnei;
char data_otpravlenia[30];
};
int main()
{ int i, n, k, m;
Adventures_of_SIB client1, client2;
char dano[30];
vector <Adventures_of_SIB>object;
for(;;){
cout << "Dobro pogalovat' v tyristicheskoe agenstvo\n";
cout << " Adventures of SIB\n\n\n";
cout << "vvedite <1> dlia dobavlenia clienta\n";
cout << "vvedite <2> dlia vivoda vseh dannih\n";
cout << "vvedite <3> dlia poiska po naimenovaniy tyra\n";
cout << "vvedite <4> dlia poiska po familii klienta\n";
cout << "vvedite <5> dlia poiska po date otpravlenia\n";
cout << "vvedite <6> dlia ydalenie tyra\n";
cout << "vvedite <7> dlia zameni tyra\n";
cout << "vvedite <8> dlia vyhoda\n\n";
cin >> m;
switch (m)
{case 1:
{
cout<<"vvedite naimenovanie tyra\n";
cin >> client1.naimenovanie_tyra;
cout <<"\n"<<"familiya klienta\n";
cin >>client1.familia_klienta;
cout <<"\n"<<"stoimost' 1 dnia poezdki\n";
cin >>client1.stoimost_1_dnia_poezdki;
cout <<"\n"<<"kolichestvo dnei\n";
cin >>client1.kolichestvo_dnei;
cout <<"\n"<<"data opravleniya(DD.MM.GGGG)\n";
cin >>client1.data_otpravlenia;
cout << "\n";
object.push_back(client1);
}
case 2:
{ for(i=0; i< object.size(); i++){
client1 = object [i];
cout << client1.naimenovanie_tyra<<"\n";
cout<<client1.familia_klienta<<"\n";
cout<< client1.stoimost_1_dnia_poezdki<<"\n";
cout<< client1.kolichestvo_dnei<<"\n";
cout<<client1.data_otpravlenia<<"\n";
}
getch();
}
case 3:
{
cout << "vvedite naimenovanie tyra\n";
cin >> dano;
for(i=0; i< object.size(); i++){
client1 = object [i];
n=strcmp(dano,client1.naimenovanie_tyra);
if (n==0) {
cout <<client1.naimenovanie_tyra<<"\n";
cout<<client1.familia_klienta<<"\n ";
cout<<client1.stoimost_1_dnia_poezdki<<"\n";
cout<< client1.kolichestvo_dnei<<"\n";
cout<<client1.data_otpravlenia<<"\n";
}
k=i+1;
}
if(k== object.size()) cout<<"ne naideno!\n";
}
case 4:
{
cout << "vvedite familiyu clienta\n";
cin >> dano;
for(i=0; i< object.size(); i++){
client1 = object [i];
n=strcmp(dano,client1.familia_klienta);
if (n==0){
cout << client1.naimenovanie_tyra<<"\n";
cout<<client1.familia_klienta<<"\n";
cout<<client1.stoimost_1_dnia_poezdki<<"\n";
cout<< client1.kolichestvo_dnei<<"\n";
cout<<client1.data_otpravlenia<<"\n";
}
k=i+1;
}
if(k== object.size()) cout<<"ne naideno!\n";
}
case 5:
{
cout << "vvedite daty otpravlenia (DD.MM.GGGG)\n";
cin >> dano;
for(i=0; i< object.size(); i++) {
client1 = object [i];
n=strcmp(dano,client1.data_otpravlenia);
if (n==0) {
cout << client1.naimenovanie_tyra<<"\n";
cout<<client1.familia_klienta<<"\n ";
cout<<client1.stoimost_1_dnia_poezdki<<"\n";
cout<< client1.kolichestvo_dnei<<"\n";
cout<<client1.data_otpravlenia<<"\n";
}
k=i+1;
}
if(k== object.size()) cout<<"ne naideno!\n";
}
case 6:
{
cout << "vvedite naimenovanie tyra, kotoryi nado udalit'\n";
cin >>dano;
vector<Adventures_of_SIB>::iterator a = object.begin();
for(i=0; i< object.size(); i++){
client1 = object [i];
n=strcmp(dano,client1.naimenovanie_tyra);
if (n==0){
a=a+i;
object.erase(a); }
k=i+1;
}
if(k== object.size()) cout<<"ne naideno!\n";
}
case 7:
{
cout << "vvedite naimenovanie tyra, kotoryi nuzhno zamenit'\n";
cin >> dano;
vector<Adventures_of_SIB>::iterator a = object.begin();
vector<Adventures_of_SIB>::iterator b = object.begin();
for(i=0; i< object.size(); i++){
client1 = object [i];
n=strcmp(dano,client1.naimenovanie_tyra);
if (n==0){
a=a+i;
b= object.erase(a);
cout<<"vvedite naimenovanie tyra\n";
cin >> client2.naimenovanie_tyra;
cout <<"\n"<<"vvedite familiy klienta\n";
cin >>client2.familia_klienta;
cout <<"\n"<<"vvedite stoimost' 1 dnia poezdki\n";
cin >>client2.stoimost_1_dnia_poezdki;
cout <<"\n"<<"vvedite kolichestvo dnei\n";
cin >>client2.kolichestvo_dnei;
cout <<"\n"<<"vvedite daty otpravlenia(DD.MM.GGGG)\n";
cin >>client2.data_otpravlenia;
cout << "\n";
object.insert(b,client2);
}
k=i+1;
}
if(k== object.size()) cout<<"ne naideno!\n";
}
case 8:
return 0;
}
}
2.2.4
.7- 1
.8- 2
.9- 3
- . . . .
1. : STL
2. , " ++", , "", 1995
3. , , "++ " , "", 1993
4. . . - ++. , 2011
5. .., .. ++. - UML. / . . - .: <>, 2002.
6. . ++: . - .: < <>, 1999.