Ошибка при печати вектора векторов на c++
у меня есть вектор векторов типа uint16_t, нужно их вывести, но vs пишет ошибку "отсутствует оператор "<<", соответствующий этим операндам"
#include <vector>
#include <iostream>
int main() {
vector<vector<uint16_t>> data[3];
/*здесь я его заполнил*/
// печать
for (const auto& i : data) {
for (uint16_t j : data[i]) {
cout << j << " "; // здесь какая-то ошибка
}
cout << endl;
}
return 0;
}
как можно исправить данное недоразумение? связано это ли с тем что я объявил вектор векторов как массив "[3]" или такое использование разрешено?
Ответы (2 шт):
Автор решения: Qwertiy
→ Ссылка
Два варианта.
Первый:
vector<vector<uint16_t>> data[3];
vector<vector<uint16_t>> data(3);
for (uint16_t j : data[i]) {
for (uint16_t j : i) {
Второй:
for (auto &vo : data) {
for (auto &vi : vo) {
for (uint16_t x : vi) {
cout << x << " ";
}
}
}
Автор решения: sibedir
→ Ссылка
связано это ли с тем что я объявил вектор векторов как массив "[3]"
нет, не связано. Вы не указали из какого пространства имён ваши cout
и endl
(да и vector
тоже)
- Вектор так не объявляется.
[]
тут не уместно. Вам нужен конструктов, принимающий в качестве аргумента размер инициализируемого массива. - Во вложенном цикле Вы не верно используете
i
. Это у Вас ссылка на вектор, а не индекс.
#include <vector>
#include <iostream>
#include <cstdint>
int main() {
std::vector<std::vector<uint16_t>> data(3);
std::cout << data.size() << std::endl;
/*здесь я его заполнил*/
data[0] = {1,1,1};
data[1] = {2,2,2};
data[2] = {3,3,3};
// печать
for (const auto& vec : data) {
for (uint16_t num : vec) {
std::cout << num << " ";
}
std::cout << std::endl;
}
return 0;
}
Вывод:
3
1 1 1
2 2 2
3 3 3