有没有办法编写以下功能代码
int* returnFilledArray() {
int* arr = new int[2];
arr[0] = 1;
arr[1] = 2;
return arr;
}
不知怎的那样? (创建并将数组填充为一个衬垫)。
int* returnFilledArray() {
return new int {1,2};
}
如果尝试了各种组合,但我总是得到一些语法错误,所以如果它是 可能我会感谢您的详细解释。
答案 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});