logo

Kako pristupiti vektorskim elementima u C++

Uvod

Zbog svoje dinamičke veličine i jednostavnosti korištenja, vektori su među najčešće korištenim podatkovnim strukturama u C++. Oni vam pružaju fleksibilnost i brzo dohvaćanje elemenata omogućujući vam pohranjivanje i dohvaćanje stavki u jednom, neprekidnom memorijskom bloku. Dobit ćete temeljito razumijevanje kako koristiti vektore u ovom vodiču dok proučavamo nekoliko načina pristupa vektorskim elementima u C++.

1. Pristup elementima prema indeksu

Korištenje njihovih indeksa jedna je od najlakših metoda za dobivanje pristupa vektorskim elementima. Indeks se dodjeljuje svakom elementu u vektoru, počevši od 0 za prvi element i povećavajući se za 1 za svakog daljnjeg člana. Koristite operator indeksa [] i odgovarajući indeks za dohvaćanje elementa na danom indeksu.

 #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; } 

Izlaz:

 First Element: 10 Third Element: 30 

2. Korištenje funkcije člana at().

Korištenje funkcije člana at() još je jedna tehnika za dobivanje vektorskih stavki. Metoda at() nudi provjeru granica kako biste bili sigurni da ne pristupate elementima koji su veći od vektora. Iznimka std::out_of_range izbacuje se ako je dostavljen indeks izvan raspona.

 #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; } 

Izlaz:

 First Element: 10 Third Element: 30 

3. Prednji i stražnji elementi

Dodatno, vektori nude izravan pristup svojim prvim i zadnjim stavkama putem metoda članova front() i rear(), redom. Kada jednostavno trebate pristupiti krajnjim točkama vektora, ove su funkcije vrlo korisne.

 #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; } 

Izlaz:

 First Element: 10 Last Element: 50 

4. Korištenje iteratora

Iteratori su moćan alat za navigaciju i dobivanje pristupa stavkama u spremnicima koje pruža C++. Iteratori za vektore dolaze u dvije vrste: begin() i end(). Iterator end() pokazuje jedno mjesto nakon posljednjeg elementa, dok iterator begin() pokazuje na početni član vektora. Stavkama vektora možete pristupiti ponavljanjem preko njega pomoću ovih iteratora.

 #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; } 

Izlaz:

 10 20 30 40 50 

5. Pristup elementima pomoću petlje for na temelju raspona

Petlja for temeljena na rasponu, koja pojednostavljuje proces iteracije automatskim upravljanjem iteratorima, uvedena je u C++11. Bez eksplicitnog održavanja iteratora, možete pristupiti vektorskim stavkama pomoću ove funkcije.

 #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; } 

Izlaz:

 10 20 30 40 50 

6. Pristup elementima pomoću pokazivača

Vektori su implementirani u C++ kao dinamički kreirani niz, a pokazivači se koriste za pristup njihovim elementima. Funkcija članica data() može se koristiti za dobivanje memorijske adrese prvog elementa, a aritmetika pokazivača može se koristiti za dobivanje adresa uzastopnih stavki.

 #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&apos;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 &lt;&lt; element &lt;&lt; &apos; &apos;; } std::cout &lt;&lt; std::endl; } else { std::cout &lt;&lt; &apos;Vector is empty.&apos; &lt;&lt; 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 &lt;&lt; element &lt;&lt; &apos; &apos;; } std::cout &lt;&lt; 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&apos;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 &lt;&gt; 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. Provjera veličine vektora

Provjerite nije li vektor prazan prije pokušaja pristupa bilo kojem od njegovih elemenata. Upotrijebite funkciju član size() za određivanje veličine vektora. Pristup elementima praznog vektora rezultirat će neočekivanim ponašanjem.

preimenuj linux direktorij
 #include #include int main() { std::vector numbers = {10, 20, 30, 40, 50}; if (!numbers.empty()) { // Access vector elements for (int element : numbers) { std::cout &lt;&lt; element &lt;&lt; &apos; &apos;; } std::cout &lt;&lt; std::endl; } else { std::cout &lt;&lt; &apos;Vector is empty.&apos; &lt;&lt; std::endl; } return 0; } 

Izlaz:

 10 20 30 40 50 

8. Modificiranje vektorskih elemenata

Kada imate pristup vektorskim elementima, možete ih mijenjati uz dohvaćanje njihovih vrijednosti. Koristeći bilo koju od tehnika pristupa, vektorskim elementima možete dati nove vrijednosti.

 #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 &lt;&lt; element &lt;&lt; &apos; &apos;; } std::cout &lt;&lt; std::endl; return 0; } 

Izlaz:

 15 20 35 45 55 

9. Rukovanje pristupom izvan dometa

Kada koristite indekse za pristup vektorskim elementima, ključno je potvrditi da je indeks unutar prihvatljivog raspona. Pristup stavkama koje su veće od vektora dovest će do nepredvidivog ponašanja. Pažljivo izvršite potrebnu provjeru granica ako trebate pristupiti stavkama na temelju izračuna ili korisničkog unosa kako biste spriječili pogreške.

 #include #include // Function to get user input size_t getUserInput() { size_t index; std::cout &lt;&gt; 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())>

Zaključak

Mogućnost pristupa vektorskim elementima u C++ ključna je za rad s ovim fleksibilnim formatom podataka. Razumijevanje različitih pristupa - uključujući pristup temeljen na indeksu, iteratore, pokazivače i petlju for na temelju raspona - omogućit će vam pouzdano dobivanje i modificiranje vektorskih stavki prema potrebi za vašeg programera. Kako biste spriječili moguće probleme i nedefinirano ponašanje, imajte na umu rukovanje provjerom granica, pazite na veličinu vektora i budite oprezni.