Como você anexa a um vetor em C++?

Como você anexa a um vetor em C++?
Anexar a um vetor significa adicionar um ou mais elementos na parte traseira do vetor. O vetor C ++ tem funções de membro. As funções de membro que podem ser usadas para anexar são: push_back (), insert () e emplace (). A função oficial a ser usada para anexar é push_back (). O uso dessas três funções de membro para anexar a um vetor C ++ é explicado neste artigo.

Para usar um vetor, a biblioteca vetorial deve ser incluída no topo do programa, com

#incluir

Todos os códigos vetoriais deste artigo estão na função C ++ main ().

Conteúdo do artigo

  • Retrocesso
  • Inserção
  • Emplace
  • Conclusão

Retrocesso

Um único elemento pode ser empurrado na parte de trás de um vetor. Existem duas sintaxes para as funções de membro push_back (), que são:

void push_back (const t & x)
void push_back (t && x)

Ambos retornam vazios e são usados ​​da mesma forma.

O código a seguir tem um vetor de flores na Grã -Bretanha. Mais uma flor é push_back (), eu.e., anexado, ao vetor. O vetor é um vetor de cordas da classe String.

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
para (int i = 0; icout<cout<vtr.push_back ("Cornflower");
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout<< *it << ", ";
cout<retornar 0;

A saída é:

Garraga azul, garrafa, brodiaea, vassoura, columbina,
Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Mórima de Cornualha,

O programa começa com as diretivas de inclusão necessárias. Depois, há a função principal () com todo o código vetorial. Na função principal (), um vetor de cinco cordas de nomes de flores é declarado. Esta lista é exibida usando um loop e índices. A declaração principal no código é:

vtr.push_back ("Cornflower");

Esta expressão anexa outro nome de flor único à lista de vetores. Agora existem seis elementos no vetor. O próximo segmento de código exibe o conjunto de seis elementos, usando um loop e iteradores.

Empurre de volta ao vetor vazio

Um vetor nem sempre deve ser criado com elementos. Um vetor pode ser criado, vazio. A função de membro push_back () ainda pode ser usada para alimentar elementos para um vetor vazio. O código a seguir ilustra o seguinte:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr;
vtr.push_back ("Blue Gutroatwort");
vtr.push_back ("garrafa");
vtr.push_back ("brodiaea");
para (int i = 0; icout<cout<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea,

Na função Main (), a primeira declaração declara um vetor vazio. As próximas três instruções alimentam o vetor com três nomes de flores, usando a função push_back (). O segmento de código a seguir exibe os três valores do vetor.

Inserção

Duas funções simplificadas para inserir em um vetor são:

a.inserir (p, t)
a.Inserir (P, RV)

onde 'a' é o nome de um vetor e p é um iterador apontando para o elemento na frente do qual a inserção ocorrerá. Essas funções são usadas de maneira semelhante, como ilustrado no exemplo a seguir:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
vetor :: iterator p = vtr.fim();
vetor :: iterator pret = vtr.inserir (p, "milhoflower");
para (int i = 0; icout<cout<cout<< *pRet<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Mórima de Cornualha,
milhoflower

As duas declarações especiais neste código são:

vetor:: iterador p = vtr.fim();
vetor:: iterator pret = vtr.inserir (p, "milhoflower");

A primeira declaração aqui retorna um iterador que aponta logo após o último elemento do vetor. Após a inserção, o iterador retornou, aponta para o elemento inserido. Nesse caso, o iterador retornou é pret. A expressão, *pret no código, obtém o valor apontado por pret.

a.inserir (p, n, t)

Isso insere n dos mesmos valores t. Nesse caso, a inserção deve ocorrer no final, como no código a seguir:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
vetor :: iterator p = vtr.fim();
vetor :: iterator pret = vtr.inserir (p, 3, "milhoflower");
para (int i = 0; icout<cout<cout<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea, Broom, Columbina, Mórima de Cornualha, Mórima de Cornualha, Curva,
5

Duas novas declarações de interesse neste programa são:

vetor:: iterator pret = vtr.inserir (p, 3, "milhoflower");
e
cout << pRet - vtr.begin() << endl;

A primeira declaração aqui insere 3 elementos de "milhoflower". A segunda declaração calcula e retorna o índice correspondente ao iterador retornado pela função insert (). Este iterador aponta para o primeiro elemento dos elementos inseridos.

a.inserir (p, i, j)

Isso insere uma gama de elementos de um vetor semelhante ao vetor de interesse. eu e j somos iteradores. O elemento indicado por J não é inserido. Esse intervalo é indicado por [i, j) . Na situação de anexar, o intervalo deve ser inserido na parte traseira. O programa a seguir ilustra o seguinte:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvec = "Cornflower", "Corsage Orchid", "Dill", "Drumstick", "Foxglove";
vetor :: iterator itb = vec.começar();
ITB ++;
vetor :: iterator ite = vec.fim();
eu te--; eu te--;
Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
vetor :: iterator p = vtr.fim();
vetor :: iterator pret = vtr.inserir (P, Itb, ITE);
para (int i = 0; icout<cout<cout<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Orquídea de Corsage, Dill,
5

A segunda declaração na função Main () retorna um iterador que aponta para "milhoflower". A terceira declaração faz deste iterador apontar para "Orchids de corsário". A declaração depois de devolver um iterador que aponta logo após "Foxglove". A declaração a seguir faz deste iterador apontar para "Drumstick". Então o intervalo é agora,

"Orquídea de Corsage", "Dill", "Drumstick"

correspondente a [ITB, ITE) . No entanto, o intervalo inserido é ("Orquídea de Corsage", "Dill"), conforme explicado acima.

a.inserir (p, il)

Uma lista literal pode ser inserida na parte de trás do vetor. Nesse caso, o último elemento da lista é inserido. O programa a seguir ilustra o seguinte:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
vetor :: iterator p = vtr.fim();
vetor :: iterator pret = vtr.inserir (p, "corsage orquídea", "endro", "bateria");
para (int i = 0; icout<cout<cout<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Orquídea de Corsage, Dill, Drumstick,
5

A declaração especial neste programa é:

vetor:: iterator pret = vtr.inserir (p, "corsage orquídea", "endro", "bateria");

A lista inserida é:

"Orchid de corsagem", "Dill", "Drumstick"

O iterador devolvido aponta para o primeiro elemento da lista inserida.

Emplace

Emplace é como uma inserção. Como este artigo lida com o Appending, o emplace deve ocorrer na parte de trás do vetor.

a.Emplace (P, Args)

Esta é a função de membro simplificada de emplace (). P é um iterador, apontando para o elemento, diante do qual o novo elemento é inserido. A função retorna um iterador apontando para o elemento inserido. O programa a seguir ilustra o seguinte:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
vetor :: iterator p = vtr.fim();
vetor :: iterator pret = vtr.emplace (P, "Cornflower");
para (int i = 0; icout<cout<cout<< *pRet<retornar 0;

A saída é:

Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Mórima de Cornualha,
milhoflower

A declaração especial neste programa é:

vetor:: iterator pret = vtr.emplace (P, "Cornflower");

a.emplace_back (args)

Aqui, 'a' é o nome do vetor. emplace_back () é como push_back (). Ele anexa um elemento ao vetor. Não retorna um iterador. Retorna uma referência ao elemento inserido. O programa a seguir ilustra seu uso:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr = "Blue Throatwort", "Bottlebrush", "Brodiaea", "Broom", "Columbine";
para (int i = 0; icout<cout<vtr.emplace_back ("Cornflower");
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout<< *it << ", ";
cout<retornar 0;

A saída é:

Garraga azul, garrafa, brodiaea, vassoura, columbina,
Garraga Azul, Bottlebrush, Brodiaea, vassoura, Columbine, Mórima de Cornualha,

A declaração principal do programa é:

vtr.push_back ("Cornflower");

Esta expressão anexa outro nome de flor único à lista de vetores. Agora existem seis elementos no vetor. O próximo segmento de código no programa exibe o conjunto de seis elementos, usando um loop for e iteradores.

Emplace de volta ao vetor vazio

Um vetor nem sempre deve ser criado com elementos. Um vetor pode ser criado, vazio. A função do membro emplace_back () ainda pode ser usada para alimentar elementos para um vetor vazio. O código a seguir ilustra o seguinte:

#incluir
#incluir
#incluir
usando namespace std;
int main ()

Vectorvtr;
string str1 = vtr.emplace_back ("Blue Gutroatwort");
string str2 = vtr.emplace_back ("Bottlebrush");
string str3 = vtr.emplace_back ("brodiaea");
cout<< str1 <cout<< str2 <cout<< str3 <retornar 0;

A saída é:

Garraga azul
escova de garrafa
Brodiaea

Na função Main (), a primeira declaração declara um vetor vazio. As próximas três instruções alimentam o vetor com três nomes de flores, usando a função Emplace_back (). O segmento de código a seguir exibe os três valores do vetor.

Observação; Uma referência retornada é recebida pelo tipo de elemento.

Conclusão

Um único elemento pode ser anexado a um vetor com as funções Push_back () e emplace_back () vetor. A função de membro insert () também pode ser usada em seus diferentes formulários sobrecarregados. A função insert () funciona com iteradores.