-1

我有一个包含硬编码数据的结构,但是我不知道如何让 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;
   }
}
4

2 回答 2

0

我建议你改变你的数据布局:

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

接下来,制作一个包含值的容器:

std::vector<Triplet> test;

或者

  Triple test[MAXIMUM_CAPACITY];

这应该使您的初始化更容易。
它还可以通过使相关数据在数据缓存中更紧密地结合在一起来加速您的程序。

于 2017-02-07T19:02:10.857 回答
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;
}

观看现场演示


写这个的惯用 C++ 方式是

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 }
}};

观看现场演示

于 2017-02-07T19:04:28.543 回答