Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.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
C++ 从C+返回一个数组+;功能_C++_Arrays_Function_Return - Fatal编程技术网

C++ 从C+返回一个数组+;功能

C++ 从C+返回一个数组+;功能,c++,arrays,function,return,C++,Arrays,Function,Return,我的问题与一个问题相似,但不同。那个是输入数组,然后是返回数组。我的是输入整数,返回数组 我有一个数组,它可以得到一些数字,并使之成为一个数组 int makearr(int a, int b, int c){ arr[2]={a,b,c}; return?//how can I return it } int main(){ //and use it? } 我只想制作数组并显示它 注: 对不起,我的软件不支持元组。Avector template <typen

我的问题与一个问题相似,但不同。那个是输入数组,然后是返回数组。我的是输入整数,返回数组

我有一个数组,它可以得到一些数字,并使之成为一个数组

int makearr(int a, int b, int c){
    arr[2]={a,b,c};
    return?//how can I return it
}

int main(){
    //and use it?
}
我只想制作数组并显示它

注: 对不起,我的软件不支持元组。

A
vector

template <typename T>
std::vector<T> makearr (T a, T b, T c)
{
    T d[] = { a, b, c };
    return std::vector<T>(d, d + 3);
}

std::vector<int> x = makearr(1, 2, 3);
// access x[i]
模板
std::向量makearr(ta,tb,tc)
{
td[]={a,b,c};
返回std::向量(d,d+3);
}
向量x=makearr(1,2,3);
//存取x[i]
如果所有类型的标准容器均为verboten,则:

模板结构三{td[3];};
模板
三个制造商(TA、TB、TC)
{
三个d={a,b,c};
返回d;
}
三个x=makearr(1,2,3);
//访问x.d[i]
借用和,我拼凑了这个不使用标准容器的C++11解决方案:

template <typename T, unsigned N>
struct argh {
    argh (std::initializer_list<T> i) {
        std::copy_n(i.begin(), std::min(i.size(), N), v_);
    }
    T & operator [] (int i) { return v_[i]; }
    const T & operator [] (int i) const { return v_[i]; }
private:
    T v_[N];
};

template <typename T, typename... Type>
auto makearr (T&& val, Type&&... vals) -> argh<T, 1 + sizeof...(Type)>
{
    argh<T, 1 + sizeof...(Type)> arr = { val, vals... };
    return arr;
}

auto x = makearr(1, 2, 3);
// access x[i]
模板
结构argh{
argh(标准::初始值设定项\u列表i){
std::copy_n(i.begin(),std::min(i.size(),n),v_);
}
T&算子[](int i){return v_[i];}
常量T&运算符[](int i)常量{return v_[i];}
私人:
T v_[N];
};
模板
自动生成ARR(T&&val,类型&&val)->argh
{
argh arr={val,vals…};
返回arr;
}
自动x=makearr(1,2,3);
//存取x[i]

指针?可以将整数存储在整数数组或整数指针中。函数不能返回数组,但可以返回指针

int* makearr(int a, int b, int c){
int *array = new int[3];
array = &a;
array+1 = &b;
array+2 = &c;
return array;
}

int main(){
int* arr = makearr(1,2,3);
// Do something with the array. Access the elements by dereferencing the pointer variable
std::cout<<*arr<<" "<<*(arr+1);
delete arr;
return 0;
}
int*makearr(inta、intb、intc){
int*数组=新的int[3];
数组=&a;
数组+1=&b;
数组+2=&c;
返回数组;
}
int main(){
int*arr=makearr(1,2,3);
//对数组执行一些操作。通过取消引用指针变量来访问元素

std::cout这里不需要什么复杂的东西,只需要将第一个数组元素的地址返回到指针,指针最终将显示数组条目。数组必须全局声明,以便ptr在
main()
中知道它。 代码编写如下:

int arr[3];   //Declare it globally
int main()
{
int *ptr;
ptr=makearr(2,4,5);
for(int i=0;i<3;i++)
{
cout<<*ptr<<endl;
ptr++;
}
return 0;
}

int* makearr(int a,int b,int c)
{
arr[0]=a;arr[1]=b;arr[2]=c;
return(&arr[0])
}
int-arr[3];//全局声明它
int main()
{
int*ptr;
ptr=makearr(2,4,5);

对于(int i=0;i使用
std::pair
。如果您确实需要数组,请返回
std::array
。该语言禁止从函数返回数组。这只能返回两件事。函数需要两件事。事实上,您的函数可以替换为
std::make\u pair
,或者可能只是
{a,b}
取决于您使用它的位置。对不起,这只是一个示例。:)@用户3875138,所有这些建议都可以多次使用。很抱歉,我不允许在这次任务中使用向量。你可以使用什么?不可以使用向量,不可以使用链接列表或deque。这没有任何意义。确切地说,你可以使用什么,不要给我一个我不能使用的列表,你可以在我告诉我们的时候添加C++ 11是标准化委员会发布的C++标准的一个版本,您想使用<代码>数组[0 ]。=a;
如何显示它?它是否与数组相关?我建议您开始阅读一些有关指针的基本资料以及它们在C中的工作方式。所有数组都可以与指针互换使用,而不管类型如何。不,Sumit,它们做的事情不一样。您是否尝试编译过这个?
int arr[3];   //Declare it globally
int main()
{
int *ptr;
ptr=makearr(2,4,5);
for(int i=0;i<3;i++)
{
cout<<*ptr<<endl;
ptr++;
}
return 0;
}

int* makearr(int a,int b,int c)
{
arr[0]=a;arr[1]=b;arr[2]=c;
return(&arr[0])
}