std::string::append vs std::string::push_back() vs Operador += en C++

Para agregar caracteres, puede usar el operador +=, append() y push_back(). Todos ellos ayudan a agregar carácter pero con una pequeña diferencia en la implementación y aplicación.

  • Operador += : agrega valores de un solo argumento. Complejidad del tiempo : O(n)
  • append() : le permite especificar el valor agregado usando múltiples argumentos. Complejidad temporal: O(n)
  • push_back() : le permite agregar un solo carácter a la vez. Complejidad del tiempo: O(1)

Aquí hay algunos estándares que podemos tener para comparar entre estos tres:

1) String completa: 

  • += : Podemos agregar una string completa usando +=.
  • append() : También podemos agregar una string completa usando append().
  • push_back: no permite agregar una string completa.

Implementación:

CPP

// CPP code for comparison on the
// basis of appending Full String
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{
    string str = str1;
 
    // Appending using +=
    str1 += str2;
    cout << "Using += : ";
    cout << str1 << endl;
 
    // Appending using append()
    str.append(str2);
    cout << "Using append() : ";
    cout << str << endl;
}
 
// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("GeeksforGeeks");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}
Producción

Original String : Hello World! 
Using += : Hello World! GeeksforGeeks
Using append() : Hello World! GeeksforGeeks

2) Agregar parte de String: 

  • += : No permite agregar parte de la string.
  • append() : permite agregar parte de la string.
  • push_back: no podemos agregar parte de la string usando push_back.

Implementación:

CPP

// CPP code for comparison on the basis of
// Appending part of string
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{
    // Appends 5 characters from 0th index of
    // str2 to str1
    str1.append(str2, 0, 5);
    cout << "Using append() : ";
    cout << str1;
}
 
// Driver code
int main()
{
    string str1("GeeksforGeeks ");
    string str2("Hello World! ");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}
Producción

Original String : GeeksforGeeks 
Using append() : GeeksforGeeks Hello

3) Agregar string C (char *): 

  • += : Permite agregar C-string
  • append() : También permite agregar C-string
  • push_back: no podemos agregar C-string usando push_back().

Implementación:

CPP

// CPP code for comparison on the basis of
// Appending C-string
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    string str1 = str;
 
    // Appending using +=
    str += "GeeksforGeeks";
    cout << "Using += : ";
    cout << str << endl;
 
    // Appending using append()
    str1.append("GeeksforGeeks");
    cout << "Using append() : ";
    cout << str1 << endl;
}
 
// Driver code
int main()
{
    string str("World of ");
 
    cout << "Original String : " << str << endl;
    appendDemo(str);
 
    return 0;
}
Producción

Original String : World of 
Using += : World of GeeksforGeeks
Using append() : World of GeeksforGeeks

4) Agregar array de caracteres: 

  • += : Permite agregar una array de caracteres
  • append() : permite agregar una array de caracteres.
  • push_back: no permite agregar una array de caracteres.

Implementación:

CPP

// CPP code for comparison on the basis of
// Appending character array
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    char ch[6] = { 'G', 'e', 'e', 'k', 's', '\0' };
    string str1 = str;
 
    // Appending using +=
    str += ch;
    cout << "Using += : " << str << endl;
 
    // Appending using append()
    str1.append(ch);
    cout << "Using append() : ";
    cout << str1 << endl;
}
 
// Driver code
int main()
{
    string str("World of ");
 
    cout << "Original String : " << str << endl;
    appendDemo(str);
 
    return 0;
}
Producción

Original String : World of 
Using += : World of Geeks
Using append() : World of Geeks

5) Agregar un solo carácter: 

  • += : Podemos agregar un solo carácter usando el operador +=.
  • append() : permite agregar un solo carácter.
  • push_back: permite agregar un solo carácter.

CPP

// CPP code for comparison on the basis of
// Appending single character
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str)
{
    string str1 = str;
    string str2 = str;
 
    // Appending using +=
    str += 'C';
    cout << "Using += : " << str << endl;
    // Appending using append()
    str2.append("C");
    cout << "Using append() : ";
    cout << str2 << endl;
 
    // Appending using push_back()
    str1.push_back('C');
    cout << "Using push_back : ";
    cout << str1;
}
 
// Driver code
int main()
{
    string str("AB");
 
    cout << "Original String : " << str << endl;
    appendDemo(str);
 
    return 0;
}
Producción

Original String : AB
Using += : ABC
Using append() : ABC
Using push_back : ABC

6) Rango de iteradores: 

  • += : No proporciona rango de iterador.
  • append() : proporciona un rango de iteradores.
  • push_back: no proporciona rango de iterador.

Implementación:

CPP

// CPP code for comparison on the basis of
// Appending using iterator range
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
void appendDemo(string str1, string str2)
{
 
    // Appends all characters from
    // str2.begin()+5, str2.end() to str1
    str1.append(str2.begin() + 5, str2.end());
    cout << "Using append : ";
    cout << str1;
}
// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("GeeksforGeeks");
 
    cout << "Original String : " << str1 << endl;
    appendDemo(str1, str2);
 
    return 0;
}
Producción

Original String : Hello World! 
Using append : Hello World! forGeeks

7) Valor de retorno: 

  • += : Devuelve *esto.
  • append() : Devuelve *esto
  • push_back: no devuelve nada.

Implementación:

CPP

// CPP code for comparison on the basis of
// Return value
 
#include <iostream>
#include <string>
using namespace std;
 
// Function to demonstrate comparison among
// +=, append(), push_back()
string appendDemo(string str1, string str2)
{
    // Appends str2 in str1
    str1.append(str2); // Similarly with str1 += str2
    cout << "Using append : ";
 
    // Returns *this
    return str1;
}
 
// Driver code
int main()
{
    string str1("Hello World! ");
    string str2("GeeksforGeeks");
    string str;
    cout << "Original String : " << str1 << endl;
    str = appendDemo(str1, str2);
    cout << str;
    return 0;
}
Producción

Original String : Hello World! 
Using append : Hello World! GeeksforGeeks

Este artículo es una contribución de Sakshi Tiwari . Si te gusta GeeksforGeeks (¡sabemos que te gusta!) y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *