理解这个模板函数
Understanding this template function
本文关键字:函数 更新时间:2023-10-16
我试图理解一个类文件,以便将我自己编写的代码与之集成,但是我在理解这个模板函数时遇到了一些困难,我找不到这个函数的输出。
template <typename Key, typename Value> struct PriorityItem {
Key key;
Value value;
PriorityItem() {}
PriorityItem(Key const& key, Value const& value) : key(key), value(value) {
}
bool operator<(PriorityItem const& pi) const {
if (key == pi.key)
return value < pi.value;
return key < pi.key;
}
};
我可以理解这个模板正在获得两个输入并初始化它们。如果我没弄错的话它就变成了某种递归函数,但是pi.key
和pi.value
是什么意思呢?
它真的是一个递归函数吗?
为什么返回一个比较形式,它的输出是什么?
不是递归函数....
允许我复制并添加注释:
template <typename Key, typename Value>
struct PriorityItem { // This is a struct template, it takes two type parameters Key and Value
Key key; // Key is an attribute of the struct and is of type Key (one of the template parameters)
Value value; // Value is an attribute of the struct and is of type Value (the second template parameter)
PriorityItem() {} // This is the default constructor.
// It relies on Key and Value types to have proper constructors
// in order to initialize the key and value attributes.
PriorityItem(Key const& key, Value const& value) : key(key), value(value) {
// This is parameter constructor. It provides values
// to both attributes and assigns them in the initializer list.
}
bool operator<(PriorityItem const& pi) const {
// This is an operator< method. It allows to do things like :
// PriorityItem<A,B> a;
// PriorityItem<A,B> b;
// ...
// if(a < b) { ... }
//
// the comparison relationship goes as follows:
if (key == pi.key) // If key attribute is the same in both, PriorityItems...
return value < pi.value; // then follow the order of the value attributes.
return key < pi.key; // Otherwise, follow the order of the key attributes.
}
};
希望能有所帮助
这个类不是递归的。PriorityItem(Key const& key, Value const& value)
构造函数只是用作为参数传入的相同值初始化成员变量。这就是key(key)
和value(value)
所代表的。
Key和value是实例化对象的成员变量。π。键和。值变量是用来比较实例化对象的对象。该函数首先比较键,如果键相同,则根据它们的值比较对象。
相关文章:
- "error: no matching function for call to"构造函数错误
- 什么时候调用组成单元对象的析构函数
- 继承函数的重载解析
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- C++模板来检查友元函数的存在
- 递归函数计算序列中的平方和(并输出过程)
- 对RValue对象调用的LValue ref限定成员函数
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 为什么使用 "this" 指针调用派生成员函数?
- 将对象数组的引用传递给函数
- 函数调用中参数的顺序重要吗
- 函数向量_指针有不同的原型,我可以构建一个吗
- 使用不带参数的函数访问结构元素
- 代码在main()中运行,但在函数中出现错误
- 内置函数可查看CPP中的成员变量
- 如何获取std::result_of函数的返回类型
- 如何在c++中为模板函数实例创建快捷方式
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗