QVector<T>t_vctor取走值
时间: 2024-02-24 17:58:59 浏览: 26
如果想要从 `QVector<T>` 中取走值,可以使用 `take` 方法。`take` 方法可以根据给定的索引值或迭代器,从向量中取走相应的元素,并将其从向量中删除。例如,假设我们有一个 `QVector<int>`,并且想要从中取走第一个元素,可以这样写:
```cpp
QVector<int> vec{1, 2, 3, 4, 5}; // 创建一个 QVector<int>
int firstValue = vec.takeFirst(); // 从 QVector 中取走第一个元素
```
这个例子中,我们首先创建了一个 `QVector<int>`,并将其初始化为 `{1, 2, 3, 4, 5}`。然后,我们使用 `takeFirst` 方法从该向量中取走第一个元素,并将其赋值给 `firstValue` 变量。此时,`vec` 中的元素已经变为 `{2, 3, 4, 5}`。
对于模板类型为 `T` 的 `QVector<T>`,取走值的方法和上面的例子类似,只需要将 `int` 替换为 `T` 即可。
相关问题
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的遍历和打印,打印m_t的值
遍历和打印 MyTemplateClass 中的 t_vctor 可以使用以下代码:
```c++
template<typename T>
class MyTemplateClass {
public:
MyTemplateClass(T t) : m_t(t) {
t_vctor.append(t);
}
T value() const { return m_t; }
void printTVector() {
for(int i=0; i<t_vctor.size(); i++) {
qDebug() << t_vctor[i];
}
}
void printMValue() {
qDebug() << 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;
};
```
在 MyTemplateClass 中新增一个 printMValue 函数,直接使用 qDebug() 打印 m_t 的值。可以在 main 函数中通过以下代码测试:
```c++
MyTemplateClass<MyStruct1> c1({1, 2});
MyTemplateClass<MyStruct2> c2({3, "Hello"});
c1.printTVector();
c1.printMValue();
c2.printTVector();
c2.printMValue();
```
输出结果为:
```
{1, 2}
{1, 2}
{3, "Hello"}
{3, "Hello"}
```
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的遍历和打印,判断MyStruct1 的x值>0
可以使用迭代器遍历和打印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
```
判断MyStruct1的x值是否大于0,可以使用if语句,具体代码如下:
```cpp
if (std::is_same<T, MyStruct1>::value) {
if (m_t.x > 0) {
qDebug() << "MyStruct1 x > 0";
} else {
qDebug() << "MyStruct1 x <= 0";
}
}
```
完整代码如下:
```cpp
#include <QDebug>
#include <type_traits>
struct MyStruct1 { int x; int y; };
struct MyStruct2 { int x; QString y; };
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;
};
template<typename T>
void printVector(const QVector<T>& vec) {
for (auto it = vec.begin(); it != vec.end(); ++it) {
qDebug() << *it;
}
}
int main(int argc, char *argv[]) {
Q_UNUSED(argc)
Q_UNUSED(argv)
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
if (std::is_same<MyStruct1, MyStruct1>::value) {
if (myClass1.value().x > 0) {
qDebug() << "MyStruct1 x > 0";
} else {
qDebug() << "MyStruct1 x <= 0";
}
}
return 0;
}
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)