返回一个具有指定值的新数组

Return a new array with specified values?

本文关键字:新数组 数组 一个 返回      更新时间:2023-10-16

有没有办法写出下面的函数代码

int* returnFilledArray() {
 int* arr = new int[2];
 arr[0] = 1;
 arr[1] = 2;
 return arr;
}

就像那样?(创建并填充数组为一行)。

int* returnFilledArray() {
 return new int {1,2};
}

if已经尝试了各种组合,但我总是得到一些语法错误,所以当它是如果您能给我详细的解释,我将不胜感激。

是…

std::vector<int> returnFilledArray()
{
  int a[] = {1, 2};
  return std::vector<int>(a, a+2);
}

如果不使用特殊的库,你就不能在标准c++(03)中做你想做的事情。

c++ 0x支持初始化器列表-这是一个选项吗?

我曾经在这里回答过类似的问题。您可以使用以下技巧:

template<typename T, T _0, T _1, T _2, T _3, T _4> struct Array
{
  static T* Init (T *a)
  {
    a[0] = _0;
    a[1] = _1;
    a[2] = _2;
    a[3] = _3;
    a[4] = _4;
    return a;
  }
};
int* fun ()
{
  return Array<int, 1, 2, 3, 4, 5>::Init(new int[5]);
}

In C++0x:

#include <vector>
std::vector<int> returnFilledArray()
{
  return std::vector<int> {1,2} ;
}

如果您不允许使用std::vector,那么您可以尝试使用宏:

#define FILLED_ARRAY(name) int name[] = {1, 2}

我可以使用

完成类似的任务
int *ptr = new int[]{1, 2, 3};

你可以从你的函数返回

return (new int[]{1, 2, 3});