c – 扩展动态分配的数组

c – 扩展动态分配的数组,第1张

概述我按如下方式分配了一个数组. #include <iostream>int main() { const int first_dim = 3; const int second_dim = 2; // Allocate array and populate with dummy data int** myArray = new int*[first_dim]; 我按如下方式分配了一个数组.

#include <iostream>int main() {    const int first_dim = 3;    const int second_dim = 2;    // Allocate array and populate with dummy data    int** myArray = new int*[first_dim];    for (int i = 0; i < first_dim; i++) {        myArray[i] = new int[second_dim];        for (int j = 0; j < second_dim; j++) {            myArray[i][j] = i*second_dim + j;            std::cout << "[i = " << i << ",j = " << j << "] Value: " << myArray[i][j] << "\n";        }    }    // De-allocate array    for (int i = 0; i < first_dim; i++)        delete[] myArray[i];    delete[] myArray;}

假设我想在第一维中添加第4个元素,即myArray [3].这可能吗?

我听说过Vector对于这个目的来说效率要高得多,但我几乎不知道它们是什么,我以前从未使用它们.

解决方法 是的,但是非常痛苦.你需要做的是分配新的内存,它现在有你想要的新尺寸,在这种情况下是4和2,然后将矩阵的所有内容复制到你的新矩阵,然后释放前一个矩阵的内存…那是痛苦.现在让我们看看向量是如何完成的:

#include <vector>using std::vector;int main(){   vector< vector <int> > matrix;   matrix.resize(3);   for(int i = 0; i < 3; ++i)      matrix[i].resize(2);   matrix[0][1] = 4;   //...   //Now you want to make the first dimension 4? PIEce of cake   matrix.resize(4);   matrix[3].resize(2);}

HTH

编辑:
您对原始代码的一些评论:

>在C中,ALL_CAP_nameS通常引用宏(你定义的是#define).避免在其他环境中使用它们>为什么要声明FirsTDIM和SECONDDIM是静态的?这绝对没必要.如果局部变量是静态的,则非正式地表示下次使用保持值调用函数时它将是相同的变量.因为你在技术上不能称为第二个sime,这是没用的.即使你能做到这一点,它仍然是无用的.>你应该删除[] array [i];并删除[]数组;所以编译器知道你试图删除的int *和int **实际上指的是一个数组,而不仅仅是一个int或int *.

总结

以上是内存溢出为你收集整理的c – 扩展动态分配的数组全部内容,希望文章能够帮你解决c – 扩展动态分配的数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1213159.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存