QMap<unsigned char,ComData*> comDataMaps; 遍历values

在 Qt 中,QMap 是一个模板类,它提供了一个树状结构的字典,每一个键(key)对应一个值(value)。在你的例子中,QMap<unsigned char, ComData*> 是一个以 unsigned char 为键,以 ComData* 为值的映射。

如果你想遍历 comDataMaps 中的所有值,可以使用以下几种方法:

方法 1: 使用迭代器


QMap<unsigned char, ComData*> comDataMaps;

// 假设 comDataMaps 已经被填充了数据
QMap<unsigned char, ComData*>::iterator i = comDataMaps.begin();
while (i != comDataMaps.end()) {
    ComData* value = i.value();
    // 对 value 进行处理
    ++i;
}

方法 2: 使用 Java 风格的迭代器


QMap<unsigned char, ComData*> comDataMaps;

// 假设 comDataMaps 已经被填充了数据
for (QMap<unsigned char, ComData*>::iterator i = comDataMaps.begin(); i != comDataMaps.end(); ++i) {
    ComData* value = i.value();
    // 对 value 进行处理
}

方法 3: 使用范围基于的 for 循环 (C++11 及以上)


QMap<unsigned char, ComData*> comDataMaps;

// 假设 comDataMaps 已经被填充了数据
for (const auto& pair : comDataMaps) {
    ComData* value = pair.value();
    // 对 value 进行处理
}

方法 4: 直接遍历 values()

QMap 提供了一个 values() 函数,返回一个包含所有值的列表。需要注意的是,这个列表是临时的,对它的修改不会影响原始的 QMap


QMap<unsigned char, ComData*> comDataMaps;

// 假设 comDataMaps 已经被填充了数据
QList<ComData*> values = comDataMaps.values();
for (ComData* value : values) {
    // 对 value 进行处理
}

示例处理

假设你需要在遍历过程中对每个 ComData* 对象执行某个操作(比如打印信息):


#include <QMap>
#include <QList>
#include <iostream>

// 假设 ComData 类定义如下
class ComData {
public:
    void printInfo() const {
        std::cout << "ComData info" << std::endl;
    }
};

int main() {
    QMap<unsigned char, ComData*> comDataMaps;

    // 填充数据
    comDataMaps[1] = new ComData();
    comDataMaps[2] = new ComData();

    // 使用范围基于的 for 循环遍历
    for (const auto& pair : comDataMaps) {
        ComData* value = pair.value();
        value->printInfo();  // 对 value 进行处理
    }

    // 清理内存
    for (auto* value : comDataMaps.values()) {
        delete value;
    }
    comDataMaps.clear();

    return 0;
}

在上面的示例中,我们首先填充了 comDataMaps,然后使用范围基于的 for 循环遍历并调用每个 ComData 对象的 printInfo() 方法。最后,我们遍历 values() 来删除所有动态分配的对象以避免内存泄漏。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值