std::vector<Foo> vec;
Foo foo(...);
assert(vec.size() == 0);
vec.reserve(100); // I've reserved 100 elems
vec[50] = foo; // but I haven't initialized any of them
// so am I assigning into uninitialized memory?
Является ли вышеуказанный код безопасным?Является ли следующий код std :: vector действительным?
Вообще говоря, я предпочитаю использовать 'at' to' operator [] '. Хотя он семантически идентичен и немного длиннее для записи, он имеет так называемую функцию «проверки границ». Я бы никогда не подумал о том, что пишет за пределами границ как «безопасный» ... –
@Matthieu: Я этого не знал. +1. –