Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Last Element of Vector ใน C++: เข้าถึงและอัปเดตสมาชิกตัวสุดท้าย

Vector และการเข้าถึงสมาชิกสุดท้าย

std::vector เป็น dynamic array เก็บข้อมูลในหน่วยความจำติดกัน (contiguous) รองรับ random access O(1)

วิธีเข้าถึงสมาชิกตัวสุดท้ายมี 2 วิธีหลัก:

วิธีที่ 1: back() (แนะนำ)

#include <bits/stdc++.h>
using namespace std;

int main() {
    vector<int> vec = {11, 22, 33, 44, 55};
    
    cout << "Before: ";
    for (int x : vec) cout << x << " ";
    
    cout << "\nLast element (back()): " << vec.back(); // 55
    
    // อัปเดตค่า
    vec.back() = 66;
    
    cout << "\nAfter: ";
    for (int x : vec) cout << x << " ";
    // 11 22 33 44 66
    
    return 0;
}

Output

Before: 11 22 33 44 55
Last element (back()): 55
After: 11 22 33 44 66

วิธีที่ 2: size() + operator[]

int last_idx = vec.size() - 1;
cout << vec[last_idx];        // 55
vec[last_idx] = 66;           // update

Output

Last element (size-1): 55
After: 11 22 33 44 66

เปรียบเทียบ

วิธีความปลอดภัยความหมายPerformance
back()UB ถ้า emptySemantic ชัดเจน "ตัวสุดท้าย"O(1)
vec[size()-1]UB ถ้า emptyIndex-basedO(1)
vec.at(size()-1)Throw out_of_rangeBounds checkedO(1) + check

Best Practice

  • ใช้ back() สำหรับความหมายชัดเจน (self-documenting)
  • **เช็ค empty() ก่อนเสมอ** ถ้าไม่มั่นใจ
  • C++23: vec.back() มี overload ที่รับ default value สำหรับ empty vector
// Safe pattern
if (!vec.empty()) {
    cout << vec.back();
    vec.back() = new_value;
}

ฟังก์ชันคู่คือ front()

  • front() - สมาชิกตัวแรก (index 0)
  • back() - สมาชิกตัวสุดท้าย (index size()-1)

สรุป

ใช้ vec.back() เพื่ออ่าน/เขียนสมาชิกตัวสุดท้ายของ vector อย่าลืมเช็ค empty() ก่อนใช้งาน