返回具有指定值的新数组?

时间:2011-04-13 13:09:38

标签: c++

有没有办法编写以下功能代码

int* returnFilledArray() {
 int* arr = new int[2];
 arr[0] = 1;
 arr[1] = 2;
 return arr;
}
不知怎的那样? (创建并将数组填充为一个衬垫)。

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

如果尝试了各种组合,但我总是得到一些语法错误,所以如果它是 可能我会感谢您的详细解释。

7 个答案:

答案 0 :(得分:2)

是..

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

答案 1 :(得分:1)

C ++ 0x支持initializer lists - 这是一个选项吗?

答案 2 :(得分:1)

我回答了类似问题here。您可以使用以下技术:

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

答案 3 :(得分:1)

如果不使用特殊库,您无法在标准C ++(03)中执行您要执行的操作。

答案 4 :(得分:0)

C++0x

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

我能够使用

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

然后你可以从你的函数返回

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