gpt4 book ai didi

c++ - 在类里面使用模板的困惑

转载 作者:行者123 更新时间:2023-11-28 05:10:23 25 4
gpt4 key购买 nike

我目前正在自学/学习泛型编程以及如何使用 templates在运行时声明数据类型。我了解基本示例,您可以在其中将变量设为模板,以便稍后可以制作任何数据类型,但这是我尝试使用类/vector 的模板:

#include <string>
#include <vector>
#include <iostream>

using namespace std;

template <class T, class U>
class CMap{
private:
vector<T> keys;
vector<U> values;

public:
void insert(T key, U value){
keys.push_back(key);
values.push_back(value);
}

void get(int n){
cout << keys[n] << " values ->" << values[n];
}
};

int main(){
CMap<string, int> grades;
grades.insert("Jones", 12);
grades.insert("Smith", 40);

grades.get(0);
cout << endl;
grades.get(1);
cout << endl;
}

我知道我们创建了 TU作为将进入 vector 的模板数据类型。我也明白我们可以使用 insert动态方法,因为 TU是模板。

我不明白的地方:

当我声明我的类(class)时,我被告知添加以下 <string, int>我不明白这是在做什么?它怎么知道第一个参数应该去 vector<t> keys<> 中的第二个参数应该去 vector<u> values - 如果那是它正在做的事情?

最佳答案

当您使用 CMap<string, int> grades; 语句时您正在创建 CMap 类型的对象,其中每次出现 T被替换为 string和每次出现 U替换为 int .

由于您的插入方法具有签名 void insert(T key, U value) ,您新创建的对象将采用 string和一个 int替换 TU因为那是您在创建对象时提供的数据类型。

您可以为 T 使用任何您喜欢的数据类型和 U包括您自己的类(class)。

关于c++ - 在类里面使用模板的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43655509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com