std::string klase valodā C++
C++ definīcijā ir veids, kā attēlot a rakstzīmju secība kā klases objekts . Šo klasi sauc par std:: virkni. Virknes klase saglabā rakstzīmes kā baitu secību ar atļaušanas funkcionalitāti piekļuve viena baita rakstzīmei .
Virkne pret rakstzīmju masīvu
| Stīga | Char Array |
|---|---|
| Virkne ir a klase, kas definē objektus kas tiek attēloti kā rakstzīmju plūsma. | Rakstzīmju masīvs ir vienkārši rakstzīmju masīvs kuru var beigt ar nulles rakstzīmi. |
| Stīgu gadījumā atmiņa ir tiek piešķirts dinamiski . Pēc pieprasījuma darbības laikā var piešķirt vairāk atmiņas. Tā kā atmiņa nav iepriekš piešķirta, neviena atmiņa netiek tērēta . | Rakstzīmju masīva izmēram ir jābūt piešķirts statiski , ja nepieciešams, izpildes laikā nevar piešķirt vairāk atmiņas. Neizmantots piešķirts atmiņa arī tiek izniekota |
| Tā kā virknes tiek attēlotas kā objekti, nav masīva sabrukšanas rodas. | Tur ir draudi masīva sabrukšana rakstzīmju masīva gadījumā. |
| Stīgas ir lēnākas salīdzinot ar ieviešanu, nekā rakstzīmju masīvs. | Īstenošana rakstzīmju masīvs ir ātrāks nekā std:: virkne. |
| Stīgu klase definē vairākas funkcijas kas ļauj veikt kolektora darbības ar virknēm. | Rakstzīmju masīvi nepiedāvāt daudzi iebūvētās funkcijas lai manipulētu ar stīgām. |
Operācijas ar stīgām
1) Ievades funkcijas
| Funkcija | Definīcija |
|---|---|
| getline() | Šo funkciju izmanto, lai saglabātu rakstzīmju straumi, ko lietotājs ievadījis objekta atmiņā. |
| atgrūst() | Šo funkciju izmanto, lai ievadītu rakstzīmi virknes beigās. |
| pop_back() | Ieviesta no C++11 (virknēm), šī funkcija tiek izmantota, lai dzēstu pēdējo rakstzīmi no virknes. |
Piemērs:
CPP
// C++ Program to demonstrate the working of> // getline(), push_back() and pop_back()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Declaring string> > string str;> > > // Taking string input using getline()> > getline(cin, str);> > > // Displaying string> > cout < <> 'The initial string is : '> ;> > cout < < str < < endl;> > > // Inserting a character> > str.push_back(> 's'> );> > > // Displaying string> > cout < <> 'The string after push_back operation is : '> ;> > cout < < str < < endl;> > > // Deleting a character> > str.pop_back();> > > // Displaying string> > cout < <> 'The string after pop_back operation is : '> ;> > cout < < str < < endl;> > > return> 0;> }> |
Izvade
The initial string is : The string after push_back operation is : s The string after pop_back operation is :
Laika sarežģītība: O(1)
Telpas sarežģītība: O(n) kur n ir virknes lielums
2) Jaudas funkcijas
| Funkcija | Definīcija |
|---|---|
| ietilpība () | Šī funkcija atgriež virknei piešķirto jaudu, kas var būt vienāda ar virknes lielumu vai lielāka par to. Papildu vieta tiek piešķirta, lai, pievienojot virknei jaunas rakstzīmes, darbības varētu veikt efektīvi. |
| mainīt izmēru () | Šī funkcija maina virknes izmēru, izmēru var palielināt vai samazināt. |
| garums () | Šī funkcija atrod virknes garumu. |
| shrink_to_fit() | Šī funkcija samazina virknes ietilpību un padara to vienādu ar virknes minimālo ietilpību. Šī darbība ir noderīga, lai ietaupītu papildu atmiņu, ja esam pārliecināti, ka vairs nav jāpievieno rakstzīmes. |
Piemērs:
CPP
// C++ Program to demonstrate the working of> // capacity(), resize() and shrink_to_fit()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing string> > string str => 'geeksforgeeks is for geeks'> ;> > > // Displaying string> > cout < <> 'The initial string is : '> ;> > cout < < str < < endl;> > > // Resizing string using resize()> > str.resize(13);> > > // Displaying string> > cout < <> 'The string after resize operation is : '> ;> > cout < < str < < endl;> > > // Displaying capacity of string> > cout < <> 'The capacity of string is : '> ;> > cout < < str.capacity() < < endl;> > > // Displaying length of the string> > cout < <> 'The length of the string is :'> < < str.length()> > < < endl;> > > // Decreasing the capacity of string> > // using shrink_to_fit()> > str.shrink_to_fit();> > > // Displaying string> > cout < <> 'The new capacity after shrinking is : '> ;> > cout < < str.capacity() < < endl;> > > return> 0;> }> |
Izvade
The initial string is : geeksforgeeks is for geeks The string after resize operation is : geeksforgeeks The capacity of string is : 26 The length of the string is :13 The new capacity after shrinking is : 13
Laika sarežģītība: O(1)
Telpas sarežģītība: O(n) kur n ir virknes lielums
3) Iteratora funkcijas
| Funkcija | Definīcija |
|---|---|
| sākt () | Šī funkcija atgriež iteratoru virknes sākumā. |
| beigas () | Šī funkcija atgriež iteratoru uz nākamo līdz virknes beigām. |
| rbegin() | Šī funkcija atgriež apgriezto iteratoru, kas norāda uz virknes beigām. |
| renderēt () | Šī funkcija atgriež apgriezto iteratoru, kas norāda uz virknes sākuma iepriekšējo. |
| cbegin() | Šī funkcija atgriež pastāvīgu iteratoru, kas norāda uz virknes sākumu, to nevar izmantot, lai mainītu saturu, uz kuru tā norāda. |
| daži() | Šī funkcija atgriež pastāvīgu iteratoru, kas norāda uz nākamo virknes beigām, un to nevar izmantot, lai mainītu saturu, uz kuru tā norāda. |
| crbegin() | Šī funkcija atgriež pastāvīgu reverso iteratoru, kas norāda uz virknes beigām, un to nevar izmantot, lai mainītu saturu, uz kuru tā norāda. |
| crend () | Šī funkcija atgriež pastāvīgu reverso iteratoru, kas norāda uz virknes sākuma iepriekšējo, to nevar izmantot, lai mainītu saturu, uz kuru tā norāda. |
Algoritms:
- Deklarējiet virkni
- Mēģiniet atkārtot virkni, izmantojot visu veidu iteratorus
- Mēģiniet modificēt virknes elementu.
- Parādiet visas iterācijas.
Piemērs:
CPP
// C++ Program to demonstrate the working of> // begin(), end(), rbegin(), rend(), cbegin(), cend(), crbegin(), crend()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing string`> > string str => 'geeksforgeeks'> ;> > > // Declaring iterator> > std::string::iterator it;> > > // Declaring reverse iterator> > std::string::reverse_iterator it1;> > cout < <> 'Str:'> <'
'; // Displaying string cout < < 'The string using forward iterators is : '; for (it = str.begin(); it != str.end(); it++){ if(it == str.begin()) *it='G'; cout < < *it; } cout < < endl; str = 'geeksforgeeks'; // Displaying reverse string cout < < 'The reverse string using reverse iterators is ' ': '; for (it1 = str.rbegin(); it1 != str.rend(); it1++){ if(it1 == str.rbegin()) *it1='S'; cout < < *it1; } cout < < endl; str = 'geeksforgeeks'; //Displaying String cout < <'The string using constant forward iterator is :'; for(auto it2 = str.cbegin(); it2!=str.cend(); it2++){ //if(it2 == str.cbegin()) *it2='G'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content, but we can inc/dec-rement the iterator cout < <*it2; } cout < <'
'; str = 'geeksforgeeks'; //Displaying String in reverse cout < <'The reverse string using constant reverse iterator is :'; for(auto it3 = str.crbegin(); it3!=str.crend(); it3++){ //if(it2 == str.cbegin()) *it2='S'; //here modification is NOT Possible //error: assignment of read-only location //As it is a pointer to the const content, but we can inc/dec-rement the iterator cout < <*it3; } cout < <'
'; return 0; } //Code modified by Balakrishnan R (rbkraj000)> |
Izvade
Str:geeksforgeeks The string using forward iterators is : Geeksforgeeks The reverse string using reverse iterators is : Skeegrofskeeg The string using constant forward iterator is :geeksforgeeks The reverse string using constant reverse iterator is :skeegrofskeeg
Laika sarežģītība: O(1)
Telpas sarežģītība: O(n) kur n ir virknes lielums
4) Manipulācijas funkcijas:
| Funkcija | Definīcija |
|---|---|
| kopija (char masīvs, len, poz.) | Šī funkcija kopē apakšvirkni mērķa rakstzīmju masīvā, kas minēts tās argumentos. Lai sāktu kopēšanu, nepieciešami 3 argumenti, mērķa rakstzīmju masīvs, kopējamais garums un sākuma pozīcija virknē. |
| apmainīt () | Šī funkcija apmaina vienu virkni ar citu |
Piemērs:
CPP
// C++ Program to demonstrate the working of> // copy() and swap()> #include> #include // for string class> using> namespace> std;> > // Driver Code> int> main()> {> > // Initializing 1st string> > string str1 => 'geeksforgeeks is for geeks'> ;> > > // Declaring 2nd string> > string str2 => 'geeksforgeeks rocks'> ;> > > // Declaring character array> > char> ch[80];> > > // using copy() to copy elements into char array> > // copies 'geeksforgeeks'> > str1.copy(ch, 13, 0);> > > // Displaying char array> > cout < <> 'The new copied character array is : '> ;> > cout < < ch < < endl;> > > // Displaying strings before swapping> > cout < <> 'The 1st string before swapping is : '> ;> > cout < < str1 < < endl;> > cout < <> 'The 2nd string before swapping is : '> ;> > cout < < str2 < < endl;> > > // using swap() to swap string content> > str1.swap(str2);> > > // Displaying strings after swapping> > cout < <> 'The 1st string after swapping is : '> ;> > cout < < str1 < < endl;> > cout < <> 'The 2nd string after swapping is : '> ;> > cout < < str2 < < endl;> > > return> 0;> }> |
Izvade
The new copied character array is : geeksforgeeks The 1st string before swapping is : geeksforgeeks is for geeks The 2nd string before swapping is : geeksforgeeks rocks The 1st string after swapping is : geeksforgeeks rocks The 2nd string after swapping is : geeksforgeeks is for geeks
Vajag izlasīt: C++ stīgu klase un tās lietojumprogrammas