Вы можете сделать это, используя на .Вы можете попробовать следующий простой пример:
const size_t N = 20;
std::vector<int> vec(N);
try {
vec.at(N - 1) = 7;
} catch (std::out_of_range ex) {
std::cout << ex.what() << std::endl;
}
assert(vec.at(N - 1) == 7);
Обратите внимание, что метод at
возвращает allocator_type::reference
, то есть в этом случае int&
.Использование at
эквивалентно присвоению значений, таких как vec[i]=...
.
Существует разница между at
и insert , что можно понять из следующего примера:
const size_t N = 8;
std::vector<int> vec(N);
for (size_t i = 0; i<5; i++){
vec[i] = i + 1;
}
vec.insert(vec.begin()+2, 10);
Если мы теперь распечатаем vec
, мы получим:
1 2 10 3 4 5 0 0 0
Если бы вместо этого мы сделали vec.at(2) = 10
или vec[2]=10
, мы получили бы
1 2 10 4 5 0 0 0