#c #c 17
Вопрос:
У меня есть простой вектор векторов целых чисел. Вывод приведенного ниже кода будет
1 2 3 4 5
6 7 8
9 10 11
Я пытаюсь понять, как добраться
1 6 9
2 7 10
3 8 11
4
5
int main() {
using namespace std;
vector<vector<int>> a { {1,2,3,4,5}, {6,7,8}, {9,10,11} };
for (int i = 0; i < a.size(); i ) {
for (int j = 0; j < a[i].size(); j ) {
cout << a[i][j] << " " ;
}
cout << endl;
}
return 0;
};
Спасибо!
Комментарии:
1. Вам нужно всего лишь изменить два символа в вашем коде, вы можете определить, какие из них?
Ответ №1:
В этой строке: cout << a[i][j] << " " ;
, вам просто нужно поменять i
местами и j
.
#include <iostream>
#include <vector>
#include <cstddef> // for std::size_t
#include <algorithm>
// using namespace std; is bad, so don't use it.
int main()
{
std::vector<std::vector<int>> a {{1,2,3,4,5}, {6,7,8}, {9,10,11}};
std::size_t biggestSize{0};
for(const auto amp;i : a)
{
if(biggestSize < i.size())
{
biggestSize = i.size();
}
}
for (std::size_t i {0}; i < biggestSize; i) // size() returns a std::size_t type
{
for (std::size_t j {0}; j < a.size(); j) //use postfix increment opreator instead of prefix
{
if(i >= a[j].size())
{
std::cout << " ";
}
else
{
std::cout << a[j][i] << ' ' ; // swap i and j
}
}
std::cout << 'n'; //use newline character instead of std::endl
}
return 0;
}
Комментарии:
1. Спасибо вам за ответ. Я получаю ошибку сегментации. Это потому, что вектор а в моей программе { { 1, 2, 3}, { 4,5,6,7,8,9,10}, {13,14} }. Никаких мыслей. Простая замена i на j не работает.
2. @YasiruLelwala Я обновил свой код для следующего. Скажи мне, есть ли какой-нибудь жучок.
3.
for(auto amp;i : a) biggestSize = std::max(biggestSize, i.size();
)
На этой линии чего-то не хватает.4. @justANewbie Я запустил ваш измененный код (также включающий изменения, внесенные гиком Linux) и протестировал его на векторе а { {1,2,3}, {4,5,6}, {7,8,9,10,11} }. У меня все еще есть ошибка сегментации.
5. @YasiruLelwala Извиняюсь за эту опечатку. Я думаю, что теперь я все исправил.
Ответ №2:
В строке 13 просто поменяйтесь I
местами с J
:
cout << a[j][i] << " ";
Комментарии:
1. Спасибо вам за ответ. Я получаю ошибку сегментации. Это потому, что вектор а в моей программе { { 1, 2, 3}, { 4,5,6,7,8,9,10}, {13,14} }. Никаких мыслей. Простая замена i на j не работает.