C ++ для структуры в векторах доступа к индексу или использования ссылки вместо значения - PullRequest
1 голос
/ 10 марта 2019

Я предполагаю, что если я получил, например:

vector<string> myVector;
myVector.push_back("Camel");
myVector.push_back("is");
myVector.push_back("a");
myVector.push_back("noble");
myVector.push_back("animal");

И я делаю:

for (string val : myVector){
    val = "empty";
}

Он не заменяет значение в векторе, так как он скопировал содержимое вновая строка

Я предполагаю, что могу сделать

for (int i=0; i<myVector.size(); i++) {
    myVector[i] = "empty";
}

Это будет выполнять поведение.

Но хорошо.Мой вопрос:

Существует любая другая структура, подобная первому случаю, где я могу сказать «Выберите ссылку на значение в векторе вместо того, чтобы копировать значение в новую переменную», тогда я могу напрямую повлиять на векторвместо значений и имеющей модель ввода for (class value : vector)?

Или передовые практики для примера без использования ни одного из упомянутых случаев?Итератор?

1 Ответ

1 голос
/ 10 марта 2019

Объявите свой диапазон на основе цикла для инициализации ссылки на каждый элемент:

for (string& val : myVector){
    val = "empty";
}

Теперь элементы вектора модифицируются на месте.Тип "item" может быть любым, для которого ...

<item-type> declarator = *itr;

... допустимо, когда itr является итератором контейнера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...