C ++ std :: pair代码理解

时间:2014-08-13 16:32:32

标签: c++ c++-standard-library

所以我正在查看描述std::pair代码的讲义。以下是代码:

template <class U, class V>
struct pair {
    U first;
    V second;
    pair(const U& first = U(), const V& second = V()) :
        first(first), second(second) {}
};
template <class U, class Y>
pair<U, V> make_pair(const U& first, const V& second);

我试图理解这段代码,但我遇到了问题,特别是在结构中的行对。据我所知,我们根据相应的类存储两个创建两个变量的第一个和第二个变量。

在配对函数的参数中,我看到我们创建了一个新类UV,并将它们分别分配给firstsecond,但我不知道由于符号符号,我们清楚地了解const U&的工作原理。更令人困惑的是在函数声明之后使用冒号,这是我以前从未在c ++中使用过的。

我也不明白下面的行声明first(first)second(second),特别是括号。 first不是first类型,那么我们如何才能从{{1}}调用函数?

1 个答案:

答案 0 :(得分:2)

我们将把它分成几部分来解决这个问题。

U&表示我们传递的是一个将由引用使用的U类型的变量 - 构造函数使用的变量与给定的相同(相同的内存地址和值)一个论点。通过说const U& first = U()我们说我们保证不会更改传递给构造函数first的{​​{1}},我们希望const ...通过引用({{1}如果我们不在构造函数中提供first,我们应该使用...U&...的默认构造函数(first)提供的U。有关参考文献的更多信息,this page应该有所帮助。

U是“构造函数初始化列表”的一部分 - 这是在构造函数中初始化类成员变量的首选方法。我们告诉构造函数我们正在使用构造函数提供的参数... = U()初始化名为first(first)pair}的first成员变量(first(...)我们前面讨论过)。有关构造函数初始化列表的更多信息,this page应该有帮助。