logo

Sådan får du adgang til vektorelementer i C++

Introduktion

På grund af deres dynamiske størrelse og enkelhed i brugen er vektorer blandt de hyppigst anvendte datastrukturer i C++. De giver dig fleksibilitet og hurtig elementhentning ved at give dig mulighed for at gemme og hente elementer i en enkelt sammenhængende hukommelsesblok. Du vil få en grundig forståelse af, hvordan du bruger vektorer i denne tutorial, da vi studerer flere måder at få adgang til vektorelementer i C++.

1. Adgang til elementer efter indeks

At bruge deres indekser er blandt de nemmeste metoder til at få adgang til vektorelementer. Et indeks tildeles hvert element i en vektor, startende ved 0 for det første element og stigende med 1 for hvert yderligere element. Brug subscript-operatoren [] og det relevante indeks til at hente et element ved et givet indeks.

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

Produktion:

 First Element: 10 Third Element: 30 

2. Brug af at()-medlemsfunktionen

Brug af medlemfunktionen at() er en anden teknik til at komme til vektorelementer. Metoden at() tilbyder grænsekontrol for at sikre, at du ikke får adgang til elementer, der er større end vektoren. En std::out_of_range-undtagelse afgives, hvis der leveres et out-of-range-indeks.

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

Produktion:

 First Element: 10 Third Element: 30 

3. For- og bagelementer

Derudover tilbyder vektorer direkte adgang til deres første og sidste elementer via medlemsmetoderne henholdsvis front() og rear(). Når du blot skal have adgang til vektorens endepunkter, er disse funktioner ganske nyttige.

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

Produktion:

 First Element: 10 Last Element: 50 

4. Brug af iteratorer

Iteratorer er et potent værktøj til at navigere og få adgang til elementer i containere, der leveres af C++. Iteratorer for vektorer findes i to varianter: begin() og end(). end() iteratoren peger et sted efter det sidste element, mens begin() iteratoren peger på startmedlemmet af vektoren. Du kan få adgang til vektorens elementer ved at iterere over den ved hjælp af disse iteratorer.

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

Produktion:

 10 20 30 40 50 

5. Adgang til elementer med rækkeviddebaseret for loop

Den områdebaserede for loop, som strømliner iterationsprocessen ved automatisk at administrere iteratorer, blev introduceret i C++11. Uden eksplicit at vedligeholde iteratorer, kan du få adgang til vektorelementer ved at bruge denne funktionalitet.

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

Produktion:

 10 20 30 40 50 

6. Adgang til elementer ved hjælp af pointere

Vektorer er implementeret i C++ som et dynamisk oprettet array, og pointere bruges til at få adgang til deres elementer. Data()-medlemsfunktionen kan bruges til at få hukommelsesadressen for det første element, og pointer-aritmetik kan bruges til at få adresserne på successive elementer.

 #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. Kontrol af vektorstørrelse

Kontroller, at vektoren ikke er tom, før du forsøger at få adgang til nogen af ​​dens elementer. Brug medlemsfunktionen size() til at bestemme en vektors størrelse. Adgang til elementerne i en tom vektor vil resultere i uventet adfærd.

1 til 100 romersk nr
 #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; } 

Produktion:

 10 20 30 40 50 

8. Ændring af vektorelementer

Når du har adgang til vektorelementer, kan du ændre dem ud over at hente deres værdier. Ved at bruge enhver af adgangsteknikkerne kan du give vektorelementer nye værdier.

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

Produktion:

 15 20 35 45 55 

9. Håndtering af adgang uden for rækkevidde

Når du bruger indekser til at få adgang til vektorelementer, er det afgørende at bekræfte, at indekset falder inden for det acceptable interval. Adgang til elementer, der er større end vektoren, vil føre til uforudsigelig adfærd. Vær omhyggelig med at udføre den nødvendige grænsekontrol, hvis du har brug for at få adgang til elementer baseret på beregninger eller brugerinput for at forhindre fejl.

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

Konklusion

Evnen til at få adgang til vektorelementer i C++ er afgørende for at arbejde med dette fleksible dataformat. Forståelse af de forskellige tilgange, herunder indeksbaseret adgang, iteratorer, pointere og det områdebaserede for loop-vil gøre dig i stand til pålideligt at opnå og ændre vektorelementer efter behov for din programmør. For at forhindre sandsynlige problemer og udefinerbar adfærd, skal du huske at håndtere grænsekontrol, passe på vektorstørrelsen og udvise forsigtighed.