Introducció
A causa de la seva mida dinàmica i la seva senzillesa d'ús, els vectors es troben entre les estructures de dades més utilitzades en C++. Us proporcionen flexibilitat i una ràpida recuperació d'elements, ja que us permeten emmagatzemar i recuperar elements en un únic bloc de memòria contigu. En aquest tutorial obtindreu una comprensió completa de com utilitzar vectors mentre estudiem diverses maneres d'accedir als elements vectorials en C++.
1. Accés als elements per índex
L'ús dels seus índexs és un dels mètodes més fàcils per accedir als elements vectorials. S'assigna un índex a cada element d'un vector, començant a 0 per al primer element i augmentant en 1 per a cada membre més. Utilitzeu l'operador de subíndex [] i l'índex adequat per recuperar un element en un índex determinat.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; int firstElement = numbers[0]; // Accessing the first element int thirdElement = numbers[2]; // Accessing the third element std::cout << 'First Element: ' << firstElement << std::endl; std::cout << 'Third Element: ' << thirdElement << std::endl; return 0; }
Sortida:
First Element: 10 Third Element: 30
2. Utilitzant la funció membre at().
L'ús de la funció membre at() és una altra tècnica per obtenir elements vectorials. El mètode at() ofereix una comprovació de límits per assegurar-vos que no accediu a elements que siguin més grans que el vector. Es genera una excepció std::out_of_range si es proporciona un índex fora de rang.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; int firstElement = numbers.at(0); // Accessing the first element int thirdElement = numbers.at(2); // Accessing the third element std::cout << 'First Element: ' << firstElement << std::endl; std::cout << 'Third Element: ' << thirdElement << std::endl; return 0; }
Sortida:
First Element: 10 Third Element: 30
3. Elements davanter i posterior
A més, els vectors ofereixen accés directe al seu primer i darrer ítem mitjançant els mètodes membres front() i rear(), respectivament. Quan simplement necessiteu accedir als punts finals del vector, aquestes funcions són molt útils.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; int firstElement = numbers.front(); // Accessing the first element int lastElement = numbers.back(); // Accessing the last element std::cout << 'First Element: ' << firstElement << std::endl; std::cout << 'Last Element: ' << lastElement << std::endl; return 0; }
Sortida:
First Element: 10 Last Element: 50
4. Ús d'iteradors
Els iteradors són una eina potent per navegar i accedir als elements en contenidors proporcionats per C++. Els iteradors de vectors tenen dos tipus: begin() i end(). L'iterador end() apunta un lloc després de l'últim element, mentre que l'iterador begin() apunta al membre inicial del vector. Podeu accedir als elements del vector iterant sobre ell utilitzant aquests iteradors.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; // Accessing elements using iterators for (auto it = numbers.begin(); it != numbers.end(); ++it) { int element = *it; // Process the element std::cout << element << ' '; } std::cout << std::endl; return 0; }
Sortida:
10 20 30 40 50
5. Accés a elements amb un bucle per a intervals
El bucle for basat en intervals, que racionalitza el procés d'iteració mitjançant la gestió automàtica dels iteradors, es va introduir a C++11. Sense mantenir explícitament els iteradors, podeu accedir als elements vectorials utilitzant aquesta funcionalitat.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; // Accessing elements using a range-based for loop for (int element : numbers) { // Process the element std::cout << element << ' '; } std::cout << std::endl; return 0; }
Sortida:
10 20 30 40 50
6. Accés als elements mitjançant punters
Els vectors s'implementen en C++ com una matriu creada dinàmicament i s'utilitzen punters per accedir als seus elements. La funció membre data() es pot utilitzar per obtenir l'adreça de memòria del primer element, i l'aritmètica de punters es pot utilitzar per obtenir les adreces dels elements successius.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; // Accessing elements using pointers int* ptr = numbers.data(); // Get the pointer to the first element for (size_t i = 0; i <numbers.size(); ++i) { int element="*(ptr" + i); process the std::cout << ' '; } std::endl; return 0; < pre> <p> <strong>Output:</strong> </p> <pre> 10 20 30 40 50 </pre> <p> <strong>7. Checking Vector Size</strong> </p> <p>Verify that the vector is not empty before attempting to access any of its elements. Use the size() member function to determine a vector's size. Accessing the elements of an empty vector will result in unexpected behavior.</p> <pre> #include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; if (!numbers.empty()) { // Access vector elements for (int element : numbers) { std::cout << element << ' '; } std::cout << std::endl; } else { std::cout << 'Vector is empty.' << std::endl; } return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> 10 20 30 40 50 </pre> <p> <strong>8. Modifying Vector Elements</strong> </p> <p>When you have access to vector elements, you may change them in addition to retrieving their values. Using any of the access techniques, you may give vector elements new values.</p> <pre> #include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; numbers[2] = 35; // Modifying an element using index numbers.at(3) = 45; // Modifying an element using at() // Modifying the first and last elements numbers.front() = 15; numbers.back() = 55; // Printing the modified vector for (int element : numbers) { std::cout << element << ' '; } std::cout << std::endl; return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> 15 20 35 45 55 </pre> <p> <strong>9. Handling Out-of-Range Access</strong> </p> <p>When utilizing indices to access vector elements, it's crucial to confirm that the index falls within the acceptable range. Accessing items that are larger than the vector will lead to unpredictable behavior. Make careful to carry out the necessary bounds checking if you need to access items based on computations or user input to prevent any mistakes.</p> <pre> #include #include // Function to get user input size_t getUserInput() { size_t index; std::cout <> index; return index; } int main() { std::vector numbers = {10, 20, 30, 40, 50}; size_t index = getUserInput(); if (index <numbers.size()) { int element="numbers[index];" process the std::cout << 'element at index ' ': std::endl; } else handle out-of-range access 'invalid index. out of range.' return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Enter the index: 2 Element at index 2: 30 </pre> <h3>Conclusion</h3> <p>The ability to access vector elements in C++ is essential for working with this flexible data format. Understanding the different approaches-including index-based access, iterators, pointers, and the range-based for loop-will enable you to reliably obtain and modify vector items as needed for your programmer. To prevent probable problems and undefinable behavior, bear in mind to handle bounds checking, care for vector size, and apply prudence.</p> <hr></numbers.size())></pre></numbers.size();>
7. Comprovació de la mida del vector
Comproveu que el vector no estigui buit abans d'intentar accedir a qualsevol dels seus elements. Utilitzeu la funció membre size() per determinar la mida d'un vector. L'accés als elements d'un vector buit donarà lloc a un comportament inesperat.
circuit sumador complet
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; if (!numbers.empty()) { // Access vector elements for (int element : numbers) { std::cout << element << ' '; } std::cout << std::endl; } else { std::cout << 'Vector is empty.' << std::endl; } return 0; }
Sortida:
10 20 30 40 50
8. Modificació d'elements vectorials
Quan tingueu accés als elements vectorials, podeu canviar-los a més de recuperar-ne els valors. Utilitzant qualsevol de les tècniques d'accés, podeu donar nous valors als elements vectorials.
#include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; numbers[2] = 35; // Modifying an element using index numbers.at(3) = 45; // Modifying an element using at() // Modifying the first and last elements numbers.front() = 15; numbers.back() = 55; // Printing the modified vector for (int element : numbers) { std::cout << element << ' '; } std::cout << std::endl; return 0; }
Sortida:
15 20 35 45 55
9. Gestió de l'accés fora de rang
Quan s'utilitzen índexs per accedir a elements vectorials, és crucial confirmar que l'índex es troba dins del rang acceptable. L'accés a elements que són més grans que el vector comportarà un comportament impredictible. Aneu amb compte de dur a terme els límits necessaris comprovant si necessiteu accedir als elements basats en càlculs o l'entrada de l'usuari per evitar errors.
#include #include // Function to get user input size_t getUserInput() { size_t index; std::cout <> index; return index; } int main() { std::vector numbers = {10, 20, 30, 40, 50}; size_t index = getUserInput(); if (index <numbers.size()) { int element="numbers[index];" process the std::cout << \'element at index \' \': std::endl; } else handle out-of-range access \'invalid index. out of range.\' return 0; < pre> <p> <strong>Output:</strong> </p> <pre> Enter the index: 2 Element at index 2: 30 </pre> <h3>Conclusion</h3> <p>The ability to access vector elements in C++ is essential for working with this flexible data format. Understanding the different approaches-including index-based access, iterators, pointers, and the range-based for loop-will enable you to reliably obtain and modify vector items as needed for your programmer. To prevent probable problems and undefinable behavior, bear in mind to handle bounds checking, care for vector size, and apply prudence.</p> <hr></numbers.size())>
Conclusió
La capacitat d'accedir a elements vectorials en C++ és essencial per treballar amb aquest format de dades flexible. Comprendre els diferents enfocaments, inclòs l'accés basat en índexs, iteradors, punters i el bucle for basat en intervals, us permetrà obtenir i modificar elements vectorials de manera fiable segons sigui necessari per al vostre programador. Per evitar problemes probables i comportaments indefinibles, tingueu en compte que heu de controlar els límits, tenir cura de la mida del vector i aplicar prudència.