关于 C++ 的堆栈实现的一个快速问题标准库
该行是什么:
template<typename _Tp1, typename _Seq1>
friend bool
operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
在 http://gcc. gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01367.html
做什么?
为什么 _Tp1 在争论列表中重复两次? 谢谢,
What does the line:
template<typename _Tp1, typename _Seq1>
friend bool
operator==(const stack<_Tp1, _Seq1>&, const stack<_Tp1, _Seq1>&);
in http://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.4/a01367.html
do?
Why is _Tp1 repeated twice in arguements list?
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这就像问为什么 in:
const char * 重复两次 - 有两件事需要比较。 _Tp1 模板参数是存储在堆栈中的内容的类型 - 进行比较的两个堆栈必须存储相同的类型。
请注意,阅读标准库源代码不是学习 C++ 的好方法 - 您需要一本好书,例如 这个。
That's like asking why in:
const char * is repeated twice - there are two things to compare. The _Tp1 template parameter is the type of thing being stored in the stack - both stacks being compared must store the same type.
Please note that reading the Standard Library source is not a good way of learning C++ - you need a good book, such as this one.
它声明了两个
stack
sa 友元函数之间的相等运算符类,这是访问私有成员所必需的。const stack<_Tp1, _Seq1>
出现两次,因为有 2 个参数。当然,它可以写成,
但 C++ 标准 (§[stack.ops] (23.3.5.3.4)) 似乎要求此运算符是一个自由函数。
It declares the equality operator between two
stack
s a friend function of this class, which is necessary for it to access private members.The
const stack<_Tp1, _Seq1>
appear twice because there are 2 arguments.Of course it can be written as
but the C++ standard (§[stack.ops] (23.3.5.3.4)) seems to require this operator to be a free function.