Пробелы векторной печати 2d char при печати второго столбца - PullRequest
1 голос
/ 10 июля 2020

Здесь у меня есть 2d вектор char -

std::vector<std::vector<char>> solution = {
 {"O","1"}, 
 {"T","0"}, 
 {"W","9"}, 
 {"E","5"}, 
 {"N","4"}
};

Печать чего-либо из первого столбца - печатает нормально.

cout << "In main - " << solution [ 1 ] [ 0 ]; // Prints T

Но когда я пытаюсь получить доступ к элементу второго столбца.

cout << "In main - " << solution [ 1 ] [ 1 ]; // Prints blank space - I can't seem to understand why's the case.

После небольшого количества поисков я попытался заключить в одинарные кавычки каждый элемент.

std::vector<std::vector<char>> solution = {
  {'O','1'}, 
  {'T','0'}, 
  {'W','9'}, 
  {'E','5'}, 
  {'N','4'}
};

В этом случае он отлично работает.

cout << "In main - " << solution [ 1 ] [ 1 ]; // Gives me 0 in this case.

Теперь почему я получаю пробелы при доступе ко второму столбцу в сцене "" double quotes .

1 Ответ

0 голосов
/ 11 июля 2020

В вашем первом примере для каждого элемента solution вы пытаетесь построить vector<char> из 2 строковых литералов. Это будет использовать конструктор vector, который принимает 2 итератора (поскольку строковые литералы могут быть преобразованы в указатели). Поскольку указатели не обозначают допустимый диапазон, это вызывает неопределенное поведение (UB).

Во втором примере для каждого элемента solution вы пытаетесь построить vector<char> из 2 char s, что совершенно нормально и дает ожидаемый результат.

...