相关疑难解决方法(0)

从C++函数返回多个值

有没有从C++函数返回多个值的首选方法?例如,假设一个函数分割两个整数并返回商和余数.我经常看到的一种方法是使用参考参数:

void divide(int dividend, int divisor, int& quotient, int& remainder);
Run Code Online (Sandbox Code Playgroud)

一种变化是返回一个值并通过引用参数传递另一个值:

int divide(int dividend, int divisor, int& remainder);
Run Code Online (Sandbox Code Playgroud)

另一种方法是声明一个包含所有结果的结构并返回:

struct divide_result {
    int quotient;
    int remainder;
};

divide_result divide(int dividend, int divisor);
Run Code Online (Sandbox Code Playgroud)

这些方式中的一种通常是首选,还是有其他建议?

编辑:在现实世界的代码中,可能会有两个以上的结果.它们也可以是不同类型的.

c++

219
推荐指数
13
解决办法
30万
查看次数

从函数返回多个值的优雅方法

在大多数主流编程语言中,从函数返回多个值似乎是一件非常尴尬的事情.

典型的解决方案是使任一个结构或一个普通的旧数据和返回,或者通过引用传递至少一些参数或代替指针返回它们的.

使用引用/指针非常尴尬,因为它依赖于副作用,意味着你还有另一个参数要传递.

类/结构解决方案也是恕我直言,因为你最终得到了一百万个小类/结构,它们只用于从函数返回值,产生不必要的混乱和冗长.

此外,很多时候总是需要一个返回值,其余的只在某些情况下由调用者使用.这些解决方案都不允许调用者忽略不需要的返回类型.

我知道的一种优雅处理多个返回值的语言是Python.对于那些不熟悉的人,它使用元组解包:

a, b = foo(c)  # a and b are regular variables.
myTuple = foo(c)  # myTuple is a tuple of (a, b)
Run Code Online (Sandbox Code Playgroud)

有没有人对这个问题有任何其他好的解决方案?除了Python之外,现有主流语言中的两种习语以及您在非主流语言中看到的语言级解决方案都是受欢迎的.

python language-agnostic language-design function syntactic-sugar

27
推荐指数
4
解决办法
2万
查看次数

从C函数返回多个值

重要提示:请参阅这个非常相关的问题:在C++中返回多个值.

我是如何在ANSI C中做同样的事情的?你会使用一个结构或传递函数中的参数的地址吗?我追求极其高效(快速)的代码(时间和空间),即使以可读性为代价.

编辑:谢谢你的所有答案.好吧,我想我有一些解释:我正在写这本书,关于特定领域的某个算法子集.我已经为自己设定了一个非常随意的目标,即以可读性和其他方式为代价,为我的所有算法提供最有效(时间和空间)的实现.这部分是我(一般)问题的本质.

:我希望我能做到这一点,从(可能)最快到更常见的感觉(所有这些都是先验的,即没有测试):

  1. 将outvalues存储在全局对象中(我会假设像outvals [2]?),或者
  2. 将outvalues作为函数中的params传递(foo(int in,int*out1,int*out2)),或者
  3. 返回带有两个outvals的结构,或
  4. (3)仅当值与语义相关时.

这有意义吗?如果是这样的话,我认为Jason的回答是最接近的,即使他们都提供了一些"谜题".罗伯特很好,但此时的语义并不是我所追求的(尽管他的建议得到了适当的注意)

谢谢你们.

c data-structures

6
推荐指数
2
解决办法
4523
查看次数

方法应该返回多个值

HII

我在C#中有方法,我必须从该方法返回多个值而不使用像数组这样的集合.有可靠的方法吗?

c#

6
推荐指数
3
解决办法
2万
查看次数

如何让Java方法返回多个值?

我只是想知道是否有办法让Java方法返回多个值.

我正在创建一个使用jdbc库来处理数据库的应用程序.我可以成功地将值输入到数据库中,但我需要一种方法来返回它们,这就是我有点卡住的地方.我创建一个表单,用户输入一个特定的值(一个ID号),然后由执行我的数据库工作的Database类传递给该表.

Database newQuery = new Database();     
newQuery.getCust(c_ID);         //uses the GetCust method in my class,
                                //passing it the ID of the customer.
Run Code Online (Sandbox Code Playgroud)

我的Database类中的getCust()方法创建以下查询:

ResultSet Customer = stat.executeQuery("SELECT * FROM Persons WHERE Cust_ID=C_ID");
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来返回存储在Customer中的结果.有任何想法吗?

java jdbc

1
推荐指数
2
解决办法
2万
查看次数