Itera sebbene un vettore in C++
-
Usa il cicli
for
per ripetere l’iterazione sul vettore - Usa bucle basato su intervallo per iterare sul vettore
-
Usa l’algoritmo
std::for_each
per ripetere l’iterazione sul vettore
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;
}
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