Element access
1. opeator / at 차이
2. front, back / begin, end 차이
1. operator / at 차이
둘다 똑같이 N번째의 요소 접근이지만
at은 범위를 검사하여 범위 밖의 요소에 접근 시 예외처리를 발생시킵니다. (std::out_of_range)
하지만 [](operator [])는 범위검사를 하지 않으며 예외처리르 발생시키지 않습니다.
백터는 효율을 중점으로 둔 라이브러리 함수여서 보통 []를 권장하고 있으며 여러가지 방법으로
유효성 검사가 가능하기 때문에 []를 많이 사용하고 있습니다.
1. operator
reference operator[](size_type n)
{
return (_head[n]);
}
const_reference operator[](size_type n) const
{
return (_head[n]);
}
2. at
reference at(size_type n)
{
if (n >= _size)
throw std::out_of_range(" terminating with uncaught exception of type std::out_of_range: vector");
return (_head[n]);
}
const_reference at(size_type n) const
{
if (n >= _size)
throw std::out_of_range(" terminating with uncaught exception of type std::out_of_range: vector");
return (_head[n]);
}
2. front, back / begin, end 차이
begin(), end()는 iterator를 반환. front(), back()은 reference를 반환.
1. front
reference front()
{
return(_head[0]);
}
const_reference front() const
{
return(_head[0]);
}
2. back
reference back()
{
return(_head[_size - 1]);
}
const_reference back() const
{
return(_head[_size - 1]);
}
#include <iostream>
#include <vector>
int main ()
{
std::vector<int> myvector;
myvector.push_back(78);
myvector.push_back(16);
myvector.front() -= myvector.back();
std::cout << "myvector.front() is now " << myvector.front() << '\n';
return 0;
}