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
部分。