【问题标题】:Is it possible to make an array of arrays?是否可以制作数组数组?
【发布时间】:2015-03-07 21:43:51
【问题描述】:

我正在编写一个程序来模拟 C++ 中的缓存,并尝试将文件中给出的地址复制到数组中。我正在努力弄清楚如何将一个数组复制到另一个数组中,以便我可以拥有一个内存地址数组的数组。我已将地址读入一个名为“address”的数组,并且我希望我的模拟缓存是一个名为“L1_Cache”的数组。 h 是我在将地址放入 L1_Cache 后递增的计数器。此外,缓存大小将是我的 L1_Cache 数组中可用的地址行数,这将由程序的用户决定。下面是我试图将数组放入另一个数组的 sn-p。

if(sizeof(L1_Cache) < cachesize)
strcpy(L1_Cache[][h], address);

它们被定义为:

const char* address[10];
char* L1_Cache;

如果有人对如何将一个数组复制到另一个数组以制作数组数组有任何建议,请告诉我。我不确定我所做的任何事情是否正确,但我正在努力解决这个问题。

我想将获得的新地址与 L1_Cache 数组中已经存在的旧地址进行比较。

【问题讨论】:

  • C++? Array of Arrays 不再是可取的东西。请改用 std::vector。
  • 不要为 C 风格的数组烦恼。使用std::array。与值语义相同的性能。
  • 永远不要使用strcpy,而是使用strncpy。您确定您使用的是 C++ 而不是 C?
  • 为什么你的 L1_Cache 是 char*?它不应该是一个二维数组吗? stackoverflow.com/a/7949598/546375
  • “试图复制文件中给出的地址” - 我真诚地希望您指的是邮政地址。您对sizeof 运算符的使用是高度 值得怀疑的,因为我真诚地怀疑您是否打算将该表达式与指针的大小 进行比较。这个问题很难理解。似乎最大的问题是不知道如何实施您的解决方案,实际上解决方案本身可能一开始就被怀疑是错误的。在您的问题中包含您的解决方案试图解决的实际问题;不仅仅是解决方案的问题。

标签: c++ arrays


【解决方案1】:

是的,可以制作数组数组。

int a[3][3]; // a is an array of integer arrays

你有

a[0]; // this refers to the first integer array
a[1]; // this refers to the second array

您正在寻找以下内容吗?

#include <iostream>
#include <cstring>

int main()
{
    char p[2][256];
    strncpy(p[0], "This is my first address", 256);
    strncpy(p[1], "This is my second address", 256);

    std::cout << p[0] << std::endl << p[1];

    return 0;
}

【讨论】:

    【解决方案2】:

    是的。它们被称为多维数组。
    它们可以有任意数量的维度。
    例如:

    int foo[3][3]; // initialize the 2 dimensional array of integers
    foo[0][0] = 1; // change a value
    foo[0][1] = 2; // change a value
    foo[0][2] = 3; // change a value
    foo[1][0] = 4; // change a value
    foo[1][1] = 5; // change a value
    foo[1][2] = 6; // change a value
    foo[2][0] = 7; // change a value
    foo[2][1] = 8; // change a value
    foo[2][2] = 9; // change a value
    for(int i=0;i<3;++i){ // display the 2d array
        for(int j=0;j<3;++j){
            cout<<foo[i][j];
        }
        cout<<endl;
    }
    

    发生了什么:

    正在图表中分配值。
    把它想象成在一张纸的每个点上写一个值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 2021-02-24
      • 2018-05-25
      相关资源
      最近更新 更多