c++中实现类似python中print函数,可以打印任意类型,任意结构,任意纬度的方法
时间: 2024-03-17 14:45:16 浏览: 50
C++中打印方面的使用
在C++中,可以使用函数模板来实现打印任意类型、任意结构、任意维度的函数。
下面是一个简单的例子:
```c++
#include <iostream>
#include <vector>
#include <array>
template<typename T>
void print(const T& t) {
std::cout << t << std::endl;
}
template<typename T, std::size_t N>
void print(const std::array<T, N>& arr) {
for (const auto& elem : arr) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
template<typename T>
void print(const std::vector<T>& vec) {
for (const auto& elem : vec) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
template<typename T, std::size_t N>
void print(const std::array<std::array<T, N>, N>& arr2d) {
for (const auto& row : arr2d) {
for (const auto& elem : row) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
}
template<typename T>
void print(const std::vector<std::vector<T>>& vec2d) {
for (const auto& row : vec2d) {
for (const auto& elem : row) {
std::cout << elem << " ";
}
std::cout << std::endl;
}
}
// 可以添加更多的重载函数来支持更多的类型、结构、维度
int main() {
int i = 1;
double d = 3.14;
std::string str = "hello";
std::vector<int> vec = {1, 2, 3};
std::array<int, 3> arr = {4, 5, 6};
std::vector<std::vector<int>> vec2d = {{1, 2}, {3, 4}};
print(i);
print(d);
print(str);
print(vec);
print(arr);
print(vec2d);
return 0;
}
```
在这个例子中,我们定义了多个重载函数`print`,分别用于打印不同类型、不同结构、不同维度的数据。在`main`函数中,我们分别对不同类型、不同结构、不同维度的数据调用了对应的`print`函数,实现了打印任意类型、任意结构、任意维度的功能。
阅读全文