logo

razred std::string v C++

C++ ima v svoji definiciji način za predstavitev a zaporedje znakov kot objekt razreda . Ta razred se imenuje std::string. Razred niza shrani znake kot zaporedje bajtov s funkcijo dopuščanja dostop do enobajtnega znaka .

Niz proti nizu znakov

Niz

Char Array



 Niz je a razred, ki definira objekte ki so predstavljeni kot tok znakov.Niz znakov je preprosto nabor znakov ki se lahko zaključi z ničelnim znakom.
V primeru nizov je pomnilnik dodeljuje dinamično . Na zahtevo je med izvajanjem mogoče dodeliti več pomnilnika. Ker noben pomnilnik ni vnaprej dodeljen noben spomin ni izgubljen .Velikost niza znakov mora biti statično dodeljena več pomnilnika ni mogoče dodeliti med izvajanjem, če je to potrebno. Neuporabljeno dodeljeno pomnilnik je tudi izgubljen
Ker so nizi predstavljeni kot predmeti brez razpada niza pojavi.Obstaja a grožnja z razpad niza v primeru niza znakov. 
Strune so počasnejše v primerjavi z izvedbo kot niz znakov.Izvedba niz znakov je hitrejši kot std:: niz. 
Razred niza definira številne funkcionalnosti ki omogočajo mnogotere operacije na nizih.Nizi znakov ne ponujajo veliko vgrajene funkcije za manipulacijo nizov.

Operacije na nizih

1) Vhodne funkcije

funkcijaOpredelitev
getline() Ta funkcija se uporablja za shranjevanje toka znakov, kot jih vnese uporabnik v pomnilnik objekta.
push_back() Ta funkcija se uporablja za vnos znaka na koncu niza.
pop_back()Ta funkcija, uvedena iz C++11 (za nize), se uporablja za brisanje zadnjega znaka iz niza. 

primer:

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; } 

Izhod
The initial string is : The string after push_back operation is : s The string after pop_back operation is : 

Časovna zahtevnost: O(1)

Kompleksnost prostora: O(n) kjer je n velikost niza

2) Zmogljivostne funkcije

funkcijaOpredelitev
zmogljivost()Ta funkcija vrne zmogljivost, dodeljeno nizu, ki je lahko enaka ali večja od velikosti niza. Dodaten prostor je dodeljen tako, da se lahko operacije izvajajo učinkovito, ko se v niz dodajo novi znaki.
spremeni velikost () Ta funkcija spremeni velikost niza, velikost lahko povečate ali zmanjšate.
dolžina()Ta funkcija poišče dolžino niza.
shrink_to_fit()Ta funkcija zmanjša kapaciteto niza in jo izenači z minimalno zmogljivostjo niza. Ta operacija je uporabna za prihranek dodatnega pomnilnika, če smo prepričani, da ni treba več dodajati znakov.

primer:

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; } 

Izhod
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

Časovna zahtevnost: O(1)

Kompleksnost prostora: O(n) kjer je n velikost niza

3) Funkcije iteratorja

funkcijaOpredelitev
začeti ()Ta funkcija vrne iterator na začetek niza.
konec ()Ta funkcija vrne iterator na naslednji konec niza.
rbegin()Ta funkcija vrne povratni iterator, ki kaže na konec niza.
render()Ta funkcija vrne povratni iterator, ki kaže na prejšnji ali začetek niza.
cbegin()Ta funkcija vrne stalni iterator, ki kaže na začetek niza, ki ga ni mogoče uporabiti za spreminjanje vsebine, na katero kaže.
nekaj ()Ta funkcija vrne stalni iterator, ki kaže na naslednji konec niza, ki ga ni mogoče uporabiti za spreminjanje vsebine, na katero kaže.
crbegin()Ta funkcija vrne stalni povratni iterator, ki kaže na konec niza, ki ga ni mogoče uporabiti za spreminjanje vsebine, na katero kaže.
crend()Ta funkcija vrne stalni povratni iterator, ki kaže na prejšnji ali začetek niza, ki ga ni mogoče uporabiti za spreminjanje vsebine, na katero kaže.

Algoritem:

  1. Deklarirajte niz
  2. Poskusite ponoviti niz z uporabo vseh vrst iteratorjev
  3. Poskusite spremeniti element niza.
  4. Prikažite vse ponovitve.

primer:

niz struktur v jeziku c
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:'<<str<<'n';  // 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<<'n';    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<<'n';  return 0; } //Code modified by Balakrishnan R (rbkraj000) 

Izhod
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

Časovna zahtevnost: O(1)

Kompleksnost prostora: O(n) kjer je n velikost niza

4) Manipulacijske funkcije:

funkcijaOpredelitev
copy('char array' len pos) Ta funkcija kopira podniz v ciljnem nizu znakov, omenjenem v njenih argumentih. Za kopiranje so potrebni 3 argumenti dolžina ciljne matrike znakov in začetni položaj v nizu za začetek kopiranja.
zamenjaj()Ta funkcija zamenja en niz z drugim

primer:

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; } 

Izhod
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


Obvezno prebrati: Razred nizov C++ in njegove aplikacije