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++_Arrays_Variables - Fatal编程技术网

C++ 数组转换为变量

C++ 数组转换为变量,c++,arrays,variables,C++,Arrays,Variables,假设我从函数f(a,b)中获得{1,2}(无论f是/做什么),我想将它存储到int s[2]。我该怎么做?似乎我不能只做ints[2]=f(a,b),也不能分离f的输出,因为没有变量可以从中获取值f(a,b)[0]不起作用。这完全取决于f返回的确切内容。您不能简单地返回{1,2},因此它必须返回其他内容。它是指向数组的衰减指针吗?一个std::vector 如果是指针,则返回指针,然后分配值 int* p = f(a, b); s[0] = p[0]; s[1] = p[1]; 如果s大于两个

假设我从函数
f(a,b)
中获得
{1,2}
(无论
f
是/做什么),我想将它存储到
int s[2]
。我该怎么做?似乎我不能只做
ints[2]=f(a,b)
,也不能分离
f
的输出,因为没有变量可以从中获取值
f(a,b)[0]
不起作用。

这完全取决于
f
返回的确切内容。您不能简单地
返回{1,2},因此它必须返回其他内容。它是指向数组的衰减指针吗?一个
std::vector

如果是指针,则返回指针,然后分配值

int* p = f(a, b);
s[0] = p[0];
s[1] = p[1];
如果
s
大于两个元素,则最好使用
std::copy
from


这完全取决于
f
返回的确切内容。您不能简单地
返回{1,2},因此它必须返回其他内容。它是指向数组的衰减指针吗?一个
std::vector

如果是指针,则返回指针,然后分配值

int* p = f(a, b);
s[0] = p[0];
s[1] = p[1];
如果
s
大于两个元素,则最好使用
std::copy
from


改用
std::array
数组包装器:

std::array<int, 2> f(int, int);

std::array<int, 2> result = f(1, 2);
std::数组f(int,int); std::数组结果=f(1,2);
改用
std::array
数组包装器:

std::array<int, 2> f(int, int);

std::array<int, 2> result = f(1, 2);
std::数组f(int,int); std::数组结果=f(1,2);
要从函数返回两件事,我更喜欢
std::pair

#include <utility>

std::pair<int, int> f()
{
    return std::make_pair(1, 2);
}

int main()
{
    std::pair<int, int> p = f();
    int s[2] = {p.first, p.second};
}

要从函数返回两个内容,我更喜欢
std::pair

#include <utility>

std::pair<int, int> f()
{
    return std::make_pair(1, 2);
}

int main()
{
    std::pair<int, int> p = f();
    int s[2] = {p.first, p.second};
}

您可以复制它,就像在memcpy(dest,f(1,2),size)中一样

或者您可以只返回一个结构。将数组封装在结构中以通过运算符=()轻松复制它是一个老把戏。例如:


当您的代码发展并决定返回第三个值时,结构包装在以后变得很有用。作为一个结构意味着您可以使它成为向后兼容的更改,并避免更改太多其他代码。

您可以复制它,就像在memcpy(dest,f(1,2),size)中一样

或者您可以只返回一个结构。将数组封装在结构中以通过运算符=()轻松复制它是一个老把戏。例如:


当您的代码发展并决定返回第三个值时,结构包装在以后变得很有用。作为一个结构,意味着你可以使它成为向后兼容的更改,并避免更改太多其他代码…

你是如何从
f
获得
{1,2}
?不能返回数组。
f()
有什么返回类型?f的签名是什么?或者至少,什么是
f
的返回类型?如何从
f
获取
{1,2}
?不能返回数组。
f()
有什么返回类型?f的签名是什么?或者至少,什么是
f
的返回类型?就像使用
struct
的第二部分一样。不喜欢
memcpy
部分。喜欢使用
struct
的第二部分。不喜欢
memcpy
部分。