giriiş
Dinamik boyutları ve kullanım basitlikleri nedeniyle vektörler C++'da en sık kullanılan veri yapıları arasındadır. Öğeleri tek, bitişik bir bellek bloğunda saklamanıza ve almanıza olanak sağlayarak size esneklik ve hızlı öğe alımı sağlarlar. Bu derste, C++'da vektör öğelerine erişmenin çeşitli yollarını incelerken, vektörlerin nasıl kullanılacağını kapsamlı bir şekilde anlayacaksınız.
1. Öğelere Dizine Göre Erişim
Endekslerinden yararlanmak, vektör öğelerine erişim sağlamanın en kolay yöntemlerinden biridir. Bir vektördeki her öğeye, ilk öğe için 0'dan başlayıp sonraki her öğe için 1'e kadar artan bir indeks atanır. Belirli bir dizindeki bir öğeyi almak için alt simge operatörünü [] ve uygun dizini kullanın.
#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; }
Çıktı:
First Element: 10 Third Element: 30
2. at() Üye Fonksiyonunu Kullanmak
at() üye işlevini kullanmak, vektör öğelerine ulaşmak için başka bir tekniktir. at() yöntemi, vektörden daha büyük öğelere erişmediğinizden emin olmak için sınır kontrolü sunar. Aralık dışı bir dizin sağlanırsa bir std::out_of_range istisnası oluşturulur.
#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; }
Çıktı:
First Element: 10 Third Element: 30
3. Ön ve Arka Elemanlar
Ek olarak vektörler, sırasıyla front() ve back() üye yöntemleri aracılığıyla ilk ve son öğelerine doğrudan erişim sunar. Vektörün uç noktalarına erişmeniz gerektiğinde bu işlevler oldukça faydalıdır.
#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; }
Çıktı:
First Element: 10 Last Element: 50
4. Yineleyicileri Kullanmak
Yineleyiciler, C++ tarafından sağlanan kapsayıcılardaki öğelerde gezinmek ve bunlara erişim sağlamak için güçlü bir araçtır. Vektörler için yineleyicilerin iki çeşidi vardır: begin() ve end(). end() yineleyicisi son öğeden bir nokta sonrasını işaret ederken, begin() yineleyicisi vektörün başlangıç üyesini işaret eder. Bu yineleyicileri kullanarak vektörün öğelerine yineleme yaparak erişebilirsiniz.
#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; }
Çıktı:
10 20 30 40 50
5. Döngü Tabanlı Öğelere Erişim
Yineleyicileri otomatik olarak yöneterek yineleme sürecini kolaylaştıran aralık tabanlı for döngüsü, C++11'de tanıtıldı. Yineleyicilerin açık bir şekilde bakımını yapmadan, bu işlevi kullanarak vektör öğelerine erişebilirsiniz.
#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; }
Çıktı:
10 20 30 40 50
6. İşaretçileri Kullanarak Öğelere Erişim
Vektörler C++'ta dinamik olarak oluşturulmuş bir dizi olarak uygulanır ve öğelerine erişmek için işaretçiler kullanılır. data() üye işlevi, ilk öğenin bellek adresini almak için kullanılabilir ve ardışık öğelerin adreslerini almak için işaretçi aritmetiği kullanılabilir.
#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. Vektör Boyutunun Kontrol Edilmesi
Öğelerinden herhangi birine erişmeyi denemeden önce vektörün boş olmadığını doğrulayın. Bir vektörün boyutunu belirlemek için size() üye işlevini kullanın. Boş bir vektörün elemanlarına erişim beklenmeyen davranışlarla sonuçlanacaktır.
foreach döngüsü yazı tipi
#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; }
Çıktı:
10 20 30 40 50
8. Vektör Öğelerini Değiştirme
Vektör öğelerine erişiminiz olduğunda, değerlerini almanın yanı sıra bunları da değiştirebilirsiniz. Erişim tekniklerinden herhangi birini kullanarak vektör elemanlarına yeni değerler verebilirsiniz.
#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; }
Çıktı:
15 20 35 45 55
9. Menzil Dışı Erişimi Yönetme
Vektör öğelerine erişmek için endeksleri kullanırken endeksin kabul edilebilir aralıkta olduğunu doğrulamak çok önemlidir. Vektörden daha büyük öğelere erişim öngörülemeyen davranışlara yol açacaktır. Herhangi bir hatayı önlemek için öğelere hesaplamalara veya kullanıcı girişine dayalı olarak erişmeniz gerekiyorsa gerekli sınır kontrolünü gerçekleştirmeye dikkat edin.
#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())>
Çözüm
C++'daki vektör öğelerine erişme yeteneği, bu esnek veri formatıyla çalışmak için çok önemlidir. Dizin tabanlı erişim, yineleyiciler, işaretçiler ve aralık tabanlı for döngüsü dahil olmak üzere farklı yaklaşımları anlamak, programcınız için gerektiği gibi vektör öğelerini güvenilir bir şekilde elde etmenize ve değiştirmenize olanak sağlayacaktır. Olası sorunları ve tanımlanamayan davranışları önlemek için sınır kontrolünü yapmayı, vektör boyutuna dikkat etmeyi ve sağduyulu davranmayı unutmayın.