相关疑难解决方法(0)

有没有一种方便的方法来将std :: pair包装为新类型?

通常我会发现自己使用std :: pair来定义两个相关量的逻辑分组作为函数参数/返回值.一些例子:row/col,tag/value等.

通常我应该滚动自己的类而不是仅使用std :: pair.当事情开始崩溃时很容易看到 - 当代码变得乱七八糟时,第一,第二,它很难记住什么是什么 - std::pair<int, int>传达的意义不如一种类型Position.

您发现什么是将std :: pair的功能包装在一个传达真正含义的类型中的最佳方法?

以下是我考虑过的一些事情:

typedef std::pair<int, int> Position;
Run Code Online (Sandbox Code Playgroud)

这至少在传递类型时为类型赋予了有意义的名称,但是类型没有强制执行,它仍然只是一对,并且大多数相同的问题仍然存在.然而,编写起来非常简单.

struct Position : public std::pair<int, int>
{
    typedef std::pair<int, int> Base;
    Position() : Base() {}
    Position(const Position &x) : Base(x) {}
    Position(int a, int b) : Base(a, b) {}

    int &row() { return first; }
    const int &row() const { return first; }

    int &col() { return second; }
    const int &col() const { return second; } …
Run Code Online (Sandbox Code Playgroud)

c++ stl

13
推荐指数
1
解决办法
3600
查看次数

标签 统计

c++ ×1

stl ×1