2015-05-21 6 views
0

Я иду из Matlab, где я мог бы просто щелкнуть 2D-матрицу правой кнопкой мыши, чтобы увидеть визуальную визуализацию того, что внутри него. Сейчас я работаю в C++ (Visual Studio), и я ищу что-то подобное для 2d массивов, например, визуализация, как:визуализировать 2d-массив, C++

myArray = [ 1 2 3 
      4 5 6 
      7 8 9 ] 

Что лучший способ сделать что-то подобное в C++?

ответ

2

Прежде всего, это неправильный синтаксис для объявления/инициализации массивов в C++. Я не знаю, есть ли какой-либо IDE, который будет визуализировать массив для вас, но вы можете сделать это в коде с двумя циклами для этого типа. Это также показывает правильный синтаксис для массивов.

#include <iostream> 

using namespace std; 

int main(int argc, char **argv) 
{ 
    int myArray[3][3] = { 
    {1, 2, 3}, 
    {4, 5, 6}, 
    {7, 8, 9} 
    }; 

    for (int i=0; i<3; ++i) { 
    for (int j=0; j<3; ++j) 
     cout << myArray[i][j] << ' '; 
    cout << endl; 
    } 

    return 0; 
} 

Или, если вы хотите, чтобы сделать его удобным для отладки, вы можете определить директиву препроцессора, как этот

#include <iostream> 
#include <iomanip> 

using namespace std; 

#define test_array(name,ni,nj,w)  \ 
    cout << #name " = {\n";    \ 
    for (int i=0; i<ni; ++i) {   \ 
    cout << " ";      \ 
    for (int j=0; j<nj; ++j)   \ 
     cout << setw(w+1) << myArray[i][j]; \ 
    cout << endl;      \ 
    }         \ 
    cout << '}' << endl; 

int main(int argc, char **argv) 
{ 
    int myArray[3][3] = { 
    {1, 2, 3}, 
    {4, 5, 6}, 
    {7, 8, 9} 
    }; 

    test_array(myArray,3,3,2) 

    return 0; 
} 

Четвертый аргумент позволит установить ширину столбца, так что вы можете иметь хороший выравнивание.

+0

Отличный ответ, спасибо. У меня возникли проблемы с тем, что в массиве было больше столбцов, и я понял, что окно вывода может отображаться правильно, поэтому я написал вместо него файл txt. – Adam

1

Если вы ссылаетесь на вывод на консоль, вы можете просто написать функцию, которая принимает массив и его размер, и печатает эту информацию на консоли с помощью cout.

Однако, если вы используете это для отладки, есть еще один вариант визуализации данных: мышь над переменной, когда она попадает в точку останова, которую вы установили в программе. Есть несколько предостережений: если я правильно напомню, Visual Studio не будет автоматически отображать весь диапазон элементов визуализации наводки, если вы динамически выделили свой массив, потому что среда IDE не знает размер массива для правильно отобразите его. Эта проблема будет решена, если вы используете массивы статического размера или любой из классов контейнеров STL, один из которых - vector - обычно рекомендуется использовать вместо динамически распределенных массивов, поскольку они самостоятельно управляют своей памятью и предоставляют несколько полезные функции для управления их содержащимися наборами данных.

По мере продвижения дальше в C++ вы можете создать собственный класс для хранения матриц или загрузить библиотеку, в которой реализован этот класс. Если вы хотите просмотреть содержащуюся информацию таким образом, который вы предпочитаете в этом возможном случае, вы также можете использовать один из способов настройки визуализации данных в Visual Studio. Мне нравится Natvis, потому что его легко узнать и быстро получить результаты.

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