Поскольку вы объявили вектор с типом шаблона как std::string
, вы не можете вставить char
в него, вместо этого у вас может быть только строка внутри.
Если вы хотите, чтобы строка из одного символа какэлемент вектора, просто:
std::vector <std::string> instruction;
// instruction.reserve(/*some memory, if you know already the no. of strings*/);
instruction.push_back("A");
Что касается использования std :: vector :: operator [] : это неверно, потому что он возвращает ссылку на элемент вИндекс вы запросили.В тот момент, когда вы используете его (в своем коде), элемент недоступен, и, следовательно, его использование приводит вас неопределенное поведение
В комментариях выупомянул, что:
Затем я добавлю несколько символов рядом с A
Если вы намеревались объединить символы с элементами вектора (это строковый тип), вы можете либоиспользуйте operator + = строки, чтобы добавить новый символ в уже существующих строк элементов.
std::vector <std::string> instruction;
instruction.push_back(""); // create an empty string first
instruction[0] += 'A'; // add a character
instruction[0] += 'B'; // add another character
или просто push_back
, как вы пытались.Но в последнем случае вам также нужно иметь строковый (пустой или непустой) элемент, существующий в векторе.