在C++17中编写泛型嵌套容器函数可以通过使用模板和递归来实现。下面是一个示例代码:
#include <iostream>
#include <vector>
#include <list>
template<typename T>
void printContainer(const T& container) {
for (const auto& element : container) {
std::cout << element << " ";
}
std::cout << std::endl;
}
template<typename T>
void printNestedContainer(const T& container) {
for (const auto& element : container) {
if constexpr (std::is_container_v<decltype(element)>) {
printNestedContainer(element);
} else {
std::cout << element << " ";
}
}
std::cout << std::endl;
}
int main() {
std::vector<int> vec = {1, 2, 3};
std::list<std::vector<int>> nestedVec = {{4, 5, 6}, {7, 8, 9}};
printContainer(vec);
printNestedContainer(nestedVec);
return 0;
}
这个示例代码中,printContainer
函数用于打印普通容器(如std::vector
、std::list
)中的元素,而printNestedContainer
函数则用于打印嵌套容器中的元素。在printNestedContainer
函数中,我们使用了std::is_container
来判断元素是否为容器类型,如果是容器类型,则递归调用printNestedContainer
函数来打印嵌套容器中的元素。
这样,无论是普通容器还是嵌套容器,我们都可以使用这两个函数来打印它们的元素。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云