У меня есть структура, в которой есть жестко закодированные данные, однако я не могу понять, как заставить 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;
}
}
Я предлагаю вам изменить макет данных:
struct Triplet
{
int x;
float y;
int z;
};
Затем создайте контейнер значений:
std::vector<Triplet> test;
Или же
Triple test[MAXIMUM_CAPACITY];
Это должно сделать ваши инициализации проще.
Это также может ускорить вашу программу, храня соответствующие данные ближе друг к другу в кеше данных.
Я не могу понять, как получить 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