Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在函数中创建大小为n的数组,其中n是函数的整数参数 < C++ > 中有没有一种有效或类似的方法来执行这个任务? void function(int n) { int array[n] = {}; } 我尝试在C++中实现归并排序算法,这有点复杂。它本质上依赖于以这种方式声明数组的能力 int array[n] = {}; 不支持作为标准C++的一部分。尽管支持堆栈上的数组分配,但仍有编译器扩展 < C++中正确的方法是 void function(int n) { std::vector<int> array(n); } void函数(int n){ std::矢量阵列(n); } 参见参考文献以获取更多信息。C++中的< P>,用于此类情况: #include <vector> // ... void function(int n) { std::vector<int> array(n); } #包括 // ... 虚函数(int n){ std::矢量阵列(n); }_C++_Arrays_Function - Fatal编程技术网

在函数中创建大小为n的数组,其中n是函数的整数参数 < C++ > 中有没有一种有效或类似的方法来执行这个任务? void function(int n) { int array[n] = {}; } 我尝试在C++中实现归并排序算法,这有点复杂。它本质上依赖于以这种方式声明数组的能力 int array[n] = {}; 不支持作为标准C++的一部分。尽管支持堆栈上的数组分配,但仍有编译器扩展 < C++中正确的方法是 void function(int n) { std::vector<int> array(n); } void函数(int n){ std::矢量阵列(n); } 参见参考文献以获取更多信息。C++中的< P>,用于此类情况: #include <vector> // ... void function(int n) { std::vector<int> array(n); } #包括 // ... 虚函数(int n){ std::矢量阵列(n); }

在函数中创建大小为n的数组,其中n是函数的整数参数 < C++ > 中有没有一种有效或类似的方法来执行这个任务? void function(int n) { int array[n] = {}; } 我尝试在C++中实现归并排序算法,这有点复杂。它本质上依赖于以这种方式声明数组的能力 int array[n] = {}; 不支持作为标准C++的一部分。尽管支持堆栈上的数组分配,但仍有编译器扩展 < C++中正确的方法是 void function(int n) { std::vector<int> array(n); } void函数(int n){ std::矢量阵列(n); } 参见参考文献以获取更多信息。C++中的< P>,用于此类情况: #include <vector> // ... void function(int n) { std::vector<int> array(n); } #包括 // ... 虚函数(int n){ std::矢量阵列(n); },c++,arrays,function,C++,Arrays,Function,它为您分配一个大小为n的数组,并自动管理其内存。如果您不需要向量,简单分配即可: void function(int n) { std::unique_ptr<int[]> array (new int[n]); // for (int i=0; i<n; ++i) array[i] = i; } void函数(int n){ std::unique_ptr数组(新int[n]); /IN/In(int i=0;i)仅作为编译器扩展支持。C++中正确的方法是

它为您分配一个大小为
n
的数组,并自动管理其内存。

如果您不需要向量,简单分配即可:

void function(int n) {
    std::unique_ptr<int[]> array (new int[n]);

    // for (int i=0; i<n; ++i) array[i] = i;
}
void函数(int n){
std::unique_ptr数组(新int[n]);

/IN/In(int i=0;i)仅作为编译器扩展支持。C++中正确的方法是使用<代码> STD::向量数组(n);< /代码> @π-yOntoTo-αῥεῖ 实际上,我并不熟悉<代码> STD::VECARTROLL(N);< /Cord>。使用C.C的实际可变长度数组,C++没有。@亚历克斯我已经在我的文档中添加了一个链接。answer@Alex
实际上我对std::vectorray(n)并不熟悉
这就是你问的原因。我听说动态内存分配在涉及对象时可能会有问题。我特别是在使用字符串对象而不是c字符串或字符数组时听到了这一点。你对此有什么见解吗?@Alex“可能有问题的影响”特别是哪些?堆内存使用/碎片?性能?小型MCU的可移植性?当然不会影响标准PC上的简单合并排序实现。@Alex这正是
std::vector
std::string
存在的原因。它们负责所有内存处理细节。手动管理内存类似于C字符串和原始数组的y更容易出错。@πάνταῥεῖ 至于字符串的使用与C字符串,我相信这个问题是可以在文件中存储字符串的。我所说的任何一个都是熟悉的吗?我不太确定这个问题是什么。我对C++仍然是一个新的语言。亚历克斯说,无论你从谁那里听到,都没有任何意义。可能不知道他们正在谈论FFIY:你的第一个代码示例称为VLA(可变长度数组)。它在C(C11)中支持,而不是在C++中。这将在堆栈上创建动态大小数组。对于这样的合并排序,这很可能溢出堆栈。