logo

Kaip pasiekti vektorinius elementus C++

Įvadas

Dėl savo dinamiško dydžio ir naudojimo paprastumo vektoriai yra viena iš dažniausiai naudojamų duomenų struktūrų C++. Jie suteikia jums lankstumo ir greito elementų gavimo, nes leidžia saugoti ir gauti elementus viename gretimame atminties bloke. Šiame vadove gausite išsamų supratimą, kaip naudoti vektorius, nes tiriame kelis būdus, kaip pasiekti vektorinius elementus C++.

1. Prieiga prie elementų pagal indeksą

Jų indeksų naudojimas yra vienas iš paprasčiausių būdų gauti prieigą prie vektorinių elementų. Kiekvienam vektoriaus elementui priskiriamas indeksas, pradedant nuo 0 pirmajam elementui ir didėjant 1 kiekvienam tolesniam elementui. Naudokite apatinio indekso operatorių [] ir atitinkamą indeksą, kad gautumėte elementą tam tikrame indekse.

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

Išvestis:

 First Element: 10 Third Element: 30 

2. At() nario funkcijos naudojimas

Funkcijos at() naudojimas yra dar vienas būdas gauti vektorinius elementus. Metodas at() siūlo ribų patikrinimą, kad įsitikintumėte, jog nepasiekiate elementų, didesnių už vektorių. Išimtis std::out_of_range išmetama, jei pateikiamas už diapazono indeksas.

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

Išvestis:

 First Element: 10 Third Element: 30 

3. Priekiniai ir galiniai elementai

Be to, vektoriai suteikia tiesioginę prieigą prie savo pirmojo ir paskutinio elementų per narių metodus front() ir rear(), atitinkamai. Kai jums tiesiog reikia pasiekti vektoriaus galinius taškus, šios funkcijos yra labai naudingos.

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

Išvestis:

 First Element: 10 Last Element: 50 

4. Iteratorių naudojimas

Iteratoriai yra galingas įrankis naršyti ir prieiti prie elementų konteineriuose, kuriuos teikia C++. Vektorių iteratoriai būna dviejų tipų: pradžia () ir pabaiga (). End() iteratorius nurodo vieną vietą po paskutinio elemento, o start() iteratorius nurodo pradinį vektoriaus narį. Galite pasiekti vektoriaus elementus, kartodami jį naudodami šiuos iteratorius.

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

Išvestis:

 10 20 30 40 50 

5. Prieiga prie elementų naudojant diapazoną pagrįstą kilpą

Diapazonas pagrįstas ciklas, kuris supaprastina iteracijos procesą automatiškai valdydamas iteratorius, buvo pristatytas C++11. Aiškiai neprižiūrėdami iteratorių, naudodami šią funkciją, galite pasiekti vektorinius elementus.

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

Išvestis:

 10 20 30 40 50 

6. Prieiga prie elementų naudojant rodykles

Vektoriai įdiegiami C++ kaip dinamiškai sukurtas masyvas, o jų elementams pasiekti naudojamos rodyklės. Funkcija „data()“ gali būti naudojama norint gauti pirmojo elemento atminties adresą, o rodyklės aritmetika gali būti naudojama sekančių elementų adresams gauti.

 #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. Vektoriaus dydžio tikrinimas

Prieš bandydami pasiekti bet kurį jo elementą, patikrinkite, ar vektorius nėra tuščias. Norėdami nustatyti vektoriaus dydį, naudokite funkciją size() narys. Prieiga prie tuščio vektoriaus elementų sukels netikėtą elgesį.

rūšiuoti į krūvą
 #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; } 

Išvestis:

 10 20 30 40 50 

8. Vektorinių elementų keitimas

Kai turite prieigą prie vektorinių elementų, galite juos pakeisti, be to, kad gautumėte jų reikšmes. Naudodami bet kurią prieigos metodą, vektoriniams elementams galite suteikti naujas reikšmes.

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

Išvestis:

 15 20 35 45 55 

9. Prieigos už diapazono tvarkymas

Naudojant indeksus vektoriniams elementams pasiekti, labai svarbu patvirtinti, kad indeksas patenka į priimtiną diapazoną. Pasiekus elementus, kurie yra didesni už vektorių, elgsis nenuspėjamas. Atidžiai patikrinkite būtinas ribas, jei norite pasiekti elementus, pagrįstus skaičiavimais arba vartotojo įvestimi, kad išvengtumėte klaidų.

 #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())>

Išvada

Galimybė pasiekti vektorinius elementus C++ yra būtina norint dirbti su šiuo lanksčiu duomenų formatu. Suprasdami skirtingus metodus, įskaitant indeksu pagrįstą prieigą, iteratorius, rodykles ir diapazonu pagrįstą kilpą, galėsite patikimai gauti ir modifikuoti vektorinius elementus, kurių reikia jūsų programuotojui. Kad išvengtumėte galimų problemų ir neapibrėžto elgesio, nepamirškite tikrinti ribų, pasirūpinti vektoriaus dydžiu ir laikytis atsargumo.