Как обрабатывать группы данных в векторе? - PullRequest
1 голос
/ 24 января 2011

В начале моей программы у меня есть программа, генерирующая вектор, 9 элементов за один раз.Каждая из этих групп по 9 связана с данными.Позже я хочу обработать каждые 9 групп за один раз (например, распечатать их по 9 на строку).

Как мне поступить?Моя попытка:

 for (unsigned int i = 0; i < solutions.size()/9; i++)
 {
  cout << i << ": " << solutions[0+ i*9] << " " << solutions[1+ i*9] << " " << solutions[2 + i*9] << " " << solutions[3+ i*9] << " " << solutions[4+ i*9] << " " << solutions[5 + i*9] << " " << solutions[6+ i*9] << " " << solutions[7+ i*9] << " "<< solutions[8 + i*9] << endl;
  cout << endl;
 }

Я явно где-то здесь запутался.Любая помощь?

Ответы [ 3 ]

3 голосов
/ 24 января 2011

Я бы предложил использовать структуру.

struct elems {
    elements elems[9];
};
std::ostream& operator<<(std::ostream& out, const elems& elems) {
    for(int i = 0; i < 9; i++) 
        out << elems.elems[i];
    return out;
}
std::vector<elems> solutions;
1 голос
/ 24 января 2011

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

vector< vector <int> > solution;

for (unsigned int i = 0; i < solutions.size(); i++)
{
    for(int j=0; j<9; j++) {
       cout << solution[i][j] << " ";
    }

    cout << endl;
}
0 голосов
/ 24 января 2011

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

for(unsigned int i = 0; i < solutions.size(); i += 9) {
   int j = i;
  std::cout << i << ": " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " " << solutions[j++] << " "<< solutions[j++] << std::endl << std::endl;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...