C ++, как получить данные из жестко закодированной структуры?

У меня есть структура, в которой есть жестко закодированные данные, однако я не могу понять, как заставить c ++ отображать данные. Что я пытаюсь это:

#include <iostream>
using namespace std;

const int MAX = 8;

struct test {
int x[MAX] = { 16, 21, 308, 45, 51, 63, 17, 38 };
float y[MAX] = { 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5 };
int z[MAX] = { 8, 7, 6, 5, 4, 3, 2, 1 };
} id[MAX] = { 1, 2, 3, 4, 5, 6, 7, 8 };

int main() {
for (int counter = 0; counter < MAX; counter++) {
cout << id[counter].x << ", " << id[counter].y << ", "<< id[counter].z << endl;
}
}

-1

Решение

Я предлагаю вам изменить макет данных:

struct Triplet
{
int x;
float y;
int z;
};

Затем создайте контейнер значений:

std::vector<Triplet> test;

Или же

  Triple test[MAXIMUM_CAPACITY];

Это должно сделать ваши инициализации проще.
Это также может ускорить вашу программу, храня соответствующие данные ближе друг к другу в кеше данных.

0

Другие решения

Я не могу понять, как получить C ++ для отображения данных.

Вы стреляли по поводу использования жестко закодированных массивов.
Вам не нужно удваивать свои размеры для struct, любой struct инициализация сохранит необходимую память для своих членов.

Вы, вероятно, хотели написать что-то вроде

#include <iostream>
using namespace std;

const int MAX = 8;

struct test
{
int x; // A simple int
float y; // A simple float
int z; // A simple int
} const id[MAX] = // Preserve the dimension. Note the const, to prevent changing the
// hardcoded values.
// Initialize the triples as needed
{ { 16, 1.5, 8 } ,
{ 308, 2.5, 7 } ,
// Place more triples here ...
{ 38, 8.5, 1 }
};

int main()
{
for (int counter = 0; counter < MAX; counter++)
{
cout << id[counter].x << ", " << id[counter].y << ", "<< id[counter].z << endl;
}

return 0;
}

Увидеть Live Demo


Идиоматический способ С ++ написать это будет

struct test {
int x; // A simple int
float y; // A simple float
int z; // A simple int
};

std::array<test,MAX> id {{
{ 16, 1.5, 8 } ,
{ 308, 2.5, 7 } ,
// Place more triples here ...
{ 38, 8.5, 1 }
}};

Увидеть Live Demo

0

По вопросам рекламы [email protected]