在C++中,使用可变模板(variadic templates)可以定义一个列表类(list class),该类可以接受任意数量的元素,并提供对这些元素的操作和访问。
可变模板是C++11引入的特性,它允许模板接受可变数量的参数。在定义列表类时,可以使用可变模板来接受任意数量的元素类型作为模板参数。
以下是一个使用可变模板定义列表类的示例:
#include <iostream>
// 定义列表类
template<typename... Args>
class List {
public:
// 构造函数,接受任意数量的参数
List(Args... args) {
addToList(args...);
}
// 添加元素到列表
void addToList(Args... args) {
add(args...);
}
// 递归添加元素到列表
void add() {}
template<typename T, typename... Rest>
void add(T value, Rest... rest) {
list.push_back(value);
add(rest...);
}
// 获取列表大小
size_t size() const {
return list.size();
}
// 打印列表元素
void print() const {
for (const auto& item : list) {
std::cout << item << " ";
}
std::cout << std::endl;
}
private:
std::vector<Args...> list;
};
int main() {
// 创建列表对象并添加元素
List<int, std::string, double> myList(10, "Hello", 3.14);
// 打印列表大小和元素
std::cout << "List size: " << myList.size() << std::endl;
myList.print();
return 0;
}
在上述示例中,我们定义了一个List
类,它使用可变模板参数Args
来接受任意数量的元素类型。构造函数和addToList
函数使用可变模板参数args
来接受任意数量的参数,并将它们添加到列表中。add
函数使用递归方式将参数逐个添加到列表中。size
函数返回列表的大小,print
函数打印列表的元素。
这个列表类可以用于存储和操作不同类型的元素,例如整数、字符串、浮点数等。它提供了动态添加元素、获取列表大小和打印列表的功能。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云