Itera sebbene un vettore in C++

Jinku Hu 12 ottobre 2023
  1. Usa il cicli for per ripetere l’iterazione sul vettore
  2. Usa bucle basato su intervallo per iterare sul vettore
  3. Usa l’algoritmo std::for_each per ripetere l’iterazione sul vettore
Itera sebbene un vettore in C++

Questo articolo introdurrà un paio di metodi per scorrere il vettore C++ usando diversi cicli. Si noti che il codice di esempio utilizza l’operazione cout per stampare gli elementi durante l’iterazione per una migliore dimostrazione.

Usa il cicli for per ripetere l’iterazione sul vettore

Il primo metodo è il cicli for, costituito da un’istruzione in tre parti ciascuna separata da virgole. Iniziamo definendo e inizializzando la variabile i a zero. La parte successiva confronta la variabile i con il numero di elementi nel vettore, che viene recuperato con il metodo size(). L’ultima parte viene eseguita a ogni iterazione come una parte di confronto e incrementa i di uno.

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<string> str_vec = {"bit",    "nibble",     "byte",      "char",
                            "int",    "long",       "long long", "float",
                            "double", "long double"};

  for (size_t i = 0; i < str_vec.size(); ++i) {
    cout << str_vec[i] << " - ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Produzione:

bit - nibble - byte - char - int - long - long long - float - double - long double -

Usa bucle basato su intervallo per iterare sul vettore

Il cicli for può diventare piuttosto difficile da leggere in alcuni casi, ed è per questo che esiste una struttura alternativa chiamata bucle basato su intervallo. Questa versione è più adatta per l’iterazione di strutture di container troppo complicate e fornisce funzionalità flessibili per accedere agli elementi. Vedere il seguente codice di esempio:

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

int main() {
  vector<string> str_vec = {"bit",    "nibble",     "byte",      "char",
                            "int",    "long",       "long long", "float",
                            "double", "long double"};

  for (auto item : str_vec) {
    cout << item << " - ";
  }
  cout << endl;

  return EXIT_SUCCESS;
}

Usa l’algoritmo std::for_each per ripetere l’iterazione sul vettore

Gli algoritmi STL hanno funzionalità estese pronte per l’uso e uno di questi metodi è per l’iterazione, che prende come argomenti: intervallo e la funzione da applicare agli elementi dell’intervallo. Il seguente esempio dimostra come possiamo dichiarare un oggetto funzione con l’espressione lambda e quindi applicare questa funzione_personalizzata agli elementi vettoriali con una sola istruzione.

#include <algorithm>
#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::for_each;
using std::vector;

int main() {
  vector<int> int_vec = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  auto custom_func = [](auto &i) { i *= i; };

  for_each(int_vec.begin(), int_vec.end(), custom_func);
  for (auto i : int_vec) cout << i << "; ";
  cout << endl;

  return EXIT_SUCCESS;
}
Autore: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Articolo correlato - C++ Vector