Я бы хотел переписать элемент, указанный индексом, даже если этот индекс еще не существует. оператор [] работает до тех пор, пока он не окажется вне границ. emplace, похоже, делает это, но для первого параметра ему нужен итератор. Я мог бы использовать myvector.begin() + index, но это недействительно, когда вектор пуст.Как я могу переписать элемент, указанный индексом вектора?
Уточнение. Моя текущая реализация:
while (index < myvector.size())
myvector.push_back("");
myvector[index] = val;
Я надеялся на метод std. Массив всегда очень мал (несколько элементов).
Используя принятый ответ, мой код изменения:
if (index >= myvector.size()) // to avoid destroying the remaining elements when the index is smaller than current size
myvector.resize(index+1);
myvector[index] = val;
Разъяснение необходимости. Если индекс не существует, создайте индекс? Если это так, 'vector' должен будет создать все отсутствующие элементы между последним и этим новым элементом. Вместо этого подумайте об использовании 'std :: map'. – user4581301
Как вы можете переписать элемент, который не существует? AFAIK, элементы должны быть * перезаписаны *. –
Теперь, когда вы отредактировали свой вопрос, ничего не имеет смысла. –