qt5的struct MyStruct1 { int x; int y; }; struct MyStruct2 { int x; QString y; }; // 定义一个模板类(泛型类),使用 MyStruct1 和 结构体作为类型参数 template<typename T> class MyTemplateClass { public: MyTemplateClass(T t) : m_t(t) {} T value() const { return m_t; } private: T m_t; QMap<QString,QVector<T>>t_map; QMap<QString,QVector<T>>old_map; QCache<QString,QVector<T>>t_cache; QVector<T>t_vctor; };请提供比较t_vctor的遍历和打印,并且比较T的int值
时间: 2024-02-25 12:52:28 浏览: 51
c/c++中struct定义、声明、对齐方式解析
可以使用迭代器遍历和打印t_vctor,具体代码如下:
```cpp
template<typename T>
void printVector(const QVector<T>& vec) {
for (auto it = vec.begin(); it != vec.end(); ++it) {
qDebug() << *it;
}
}
MyTemplateClass<MyStruct1> myClass1(MyStruct1{1, 2});
myClass1.t_vctor.append(MyStruct1{3, 4});
myClass1.t_vctor.append(MyStruct1{5, 6});
printVector(myClass1.t_vctor); // 遍历并打印t_vctor
MyTemplateClass<MyStruct2> myClass2(MyStruct2{1, "hello"});
myClass2.t_vctor.append(MyStruct2{2, "world"});
myClass2.t_vctor.append(MyStruct2{3, "Qt"});
printVector(myClass2.t_vctor); // 遍历并打印t_vctor
```
比较T的int值可以使用std::is_same模板类,具体代码如下:
```cpp
#include <type_traits>
template<typename T>
void compareIntValue() {
if (std::is_same<T, int>::value) {
qDebug() << "T is int";
} else {
qDebug() << "T is not int";
}
}
compareIntValue<MyStruct1>(); // T is int
compareIntValue<MyStruct2>(); // T is not int
```
阅读全文