2011-12-16 2 views
0

У меня есть векторный массив, называемый nVectors.Как напечатать векторный массив?

vector<int>* nVectors[21]; 
for (int i = 1; i <= 20; i ++) { 
    nVectors[i] = generateVector(i); 
} 

Я могу напечатать все члены одного вектора, но когда дело доходит до векторного массива, я до сих пор не знаю, как печатать все векторы в массиве.

Возможно, итератор через весь член векторного массива и печать с использованием моего предопределенного метода pvector может решить эту проблему? Но я не знаю, как итерации в gdb.

+0

Что вы имеете в виду под 'печать' на экране или в GDB? –

+0

Что происходит с 'generateVector()'? –

+0

В gdb. Метод generateVector просто возвращает указатель вектора. –

ответ

0
std::array<std::vector<int>*, 21> nVectors; 

for(std::array<std::vector<int>*>::iterator i = nVectors.begin(); 
    i != nVectors.end(); 
    ++i) 
{ 
    for(std::vector<int>::iterator it = (*i)->begin(); 
     it != (*i)->end(); 
     ++it) 
    { 
     std::cout << *it << " "; 
    } 
} 

std::cout << std::endl; 

Или, в C++ 11:

std::vector<int>* nVectors[21]; 

for(auto &i : nVectors) 
{ 
    for(auto &it : i) 
    { 
     std::cout << *it << " "; 
    } 
} 

std::cout << std::endl; 
+0

Я считаю, что OP означает: «Как я могу сказать gdb распечатать содержимое каждого вектора в массиве указателей на векторы?», А не «как я могу написать код на C++ для печати содержимого каждого вектора в массиве указателей на векторы? " Кроме того, я немного соблазнился -1, так как ваш ответ показывает, как печатать 'std :: array', а не как печатать массив указателей: не очень полезно для кого-то, у кого есть массив указателей, учитывая, что вы даже не объясняете, как конвертировать из одного в другое. , , – ruakh

+0

Да, это мой смысл. –

+0

Возможно добавить 'cout << endl' в конце внешнего цикла? – Nick

Смежные вопросы