我们可以使用 pair 作为向量的名称吗?

Can we use pair as the name for a vector?

我遇到了一个表达:vector<int> pair(n)。由于pair本身是一个内置结构,我们可以将它用作c++中的变量名吗?为什么??

std::pair 不是“内置结构”。它是来自标准库的限定名称。既然是合格的,一般不会和自己的名字冲突。

这正是命名空间被添加到 C++ 语言的原因。

是的,你可以。标准库中的模板称为 std::pairstd::vector。它们不是内置的,因为它们不是语言的一部分,而是标准库的一部分。因此这不是问题:

#include <vector>  
std::vector<int> pair(n);

可以使用 using 指令删除 std:: 前缀:

#include <vector>
using std::vector;
vector<int> pair(n);

常用的也是using namespace std;:

#include <vector>
using namespace std;
vector<int> pair(n);

不过,一旦将完整的命名空间拉入范围,代码可能会相当混乱。

阅读Why is “using namespace std;” considered bad practice?并尽量避免它。并给予专有名称。 std::pair比较常见,所以你最好给vector起个好听的名字,肯定不是pair.

As pair is an inbuilt structure in itself, can we use it as a variable name in c++ and why?

这是不正确的。 Standard Template Library provides a class template called "pair" 但那是 不是 一个 内置 类型,此外,“pair”既不是关键字也不是保留字C++语言。

此外,前面提到的“pair”模板实际上是在std命名空间中提供的(在<utility>header中),所以它完全合格 名字是 std::pair。所以,除非你既 #include <utility>(明确或隐含)并且是 using std::pair;(或 using namespace std; – 但 see here),你可以使用名称“pair”作为标识符,就像任何其他 non-reserved 词一样。


事实上,即使你#include <utility>using std::pair;(或using namespace std;),您可以仍然使用“pair”作为标识符,如comment by chris.

所述