相关疑难解决方法(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万
查看次数

C++ 11中元组有哪些好的用例?

在C++ 11中使用元组有什么好的用例?例如,我有一个定义本地结构的函数,如下所示:

template<typename T, typename CmpF, typename LessF>
void mwquicksort(T *pT, int nitem, const int M, CmpF cmp, LessF less)
{
  struct SI
  {
    int l, r, w;
    SI() {}
    SI(int _l, int _r, int _w) : l(_l), r(_r), w(_w) {}
  } stack[40];

  // etc
Run Code Online (Sandbox Code Playgroud)

我正在考虑SI用一个替换结构std::tuple<int,int,int>,这是一个更短的声明,方便的构造函数和运算符已经预定义,但具有以下缺点:

  • 元组元素隐藏在模糊的,实现定义的结构中.即使Visual Studio很好地解释和显示它们的内容,我仍然不能放置依赖于元组元素值的条件断点.
  • 访问单个元组字段(get<0>(some_tuple))比访问struct元素(s.l)要冗长得多.
  • 按名称访问字段比通过数字索引提供更多信息(并且更短!).

最后两点由tie函数解决.鉴于这些缺点,元组的用例是什么?

更新事实证明VS2010 SP1调试器无法显示以下数组的内容std::tuple<int, int, int> stack[40],但它在使用结构编码时工作正常.所以这个决定基本上是一个明智的选择:如果你必须检查它的值,使用一个结构[特别是.像GDB这样的调试器很重要].

c++ tuples c++11

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

识字编码与 std :: pair,解决方案?

正如大多数程序员所钦佩并尝试遵循Literate编程的原则,但在C++中,我经常发现自己使用std::pair了大量的常见任务.但是std::pair,恕我直言,文学节目的邪恶敌人......

我的观点是,当我回到我一两天前编写的代码时,我看到一个std::pair(通常作为迭代器)的操作我不知道" 什么做了iter->第一个和iter->第二个意思? ? "

我猜其他人在查看他们的std::pair代码时有同样的疑虑,所以我想知道,有没有人想出一些好的解决方案来恢复识字时使用std::pair

c++ literate-programming

12
推荐指数
2
解决办法
1514
查看次数

标签 统计

c++ ×3

c++11 ×1

literate-programming ×1

tuples ×1