QHash遍历values

1.概要

2.内容 

QHash<int,QHash<int,MyUiComeraState*>> stateHash; 遍历有多少种方式,只遍历values

1.遍历有多少种方式,只遍历values

在 Qt 中,QHash 是一个基于哈希表的容器,它提供了快速的插入、删除和查找操作。对于嵌套的 QHash,如 QHash<int, QHash<int, MyUiComeraState*>>,你可以通过不同的方式遍历其值(values)。

如果你只想遍历所有的 MyUiComeraState* 值,你有几种方式可以实现。以下是一些常见的方法:

方法一:使用嵌套的迭代器


QHash<int, QHash<int, MyUiComeraState*>> stateHash;

// 假设 stateHash 已经被填充了数据

QHash<int, QHash<int, MyUiComeraState*>>::iterator outerIt = stateHash.begin();
while (outerIt != stateHash.end()) {
    QHash<int, MyUiComeraState*>& innerHash = outerIt.value();
    
    QHash<int, MyUiComeraState*>::iterator innerIt = innerHash.begin();
    while (innerIt != innerHash.end()) {
        MyUiComeraState* state = innerIt.value();
        // 处理 state
        ++innerIt;
    }
    
    ++outerIt;
}

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


QHash<int, QHash<int, MyUiComeraState*>> stateHash;

// 假设 stateHash 已经被填充了数据

for (const auto& outerPair : stateHash) {
    const QHash<int, MyUiComeraState*>& innerHash = outerPair.value();
    
    for (const auto& innerPair : innerHash) {
        MyUiComeraState* state = innerPair.value();
        // 处理 state
    }
}

方法三:使用 Qt 的 foreach 宏(不推荐在新代码中使用,因为 C++11 提供了更好的范围 for 循环)


QHash<int, QHash<int, MyUiComeraState*>> stateHash;

// 假设 stateHash 已经被填充了数据

foreach (const QHash<int, MyUiComeraState*>& innerHash, stateHash) {
    foreach (MyUiComeraState* state, innerHash) {
        // 处理 state
    }
}

方法四:使用 Java 风格的迭代器(较少使用)


QHash<int, QHash<int, MyUiComeraState*>> stateHash;

// 假设 stateHash 已经被填充了数据

foreach (const QHash<int, MyUiComeraState*>& innerHash, stateHash) {
    foreach (MyUiComeraState* state, innerHash) {
        // 处理 state
    }
}

总结

对于只遍历 QHash<int, QHash<int, MyUiComeraState*>> 中的 MyUiComeraState* 值,最常见和推荐的方法是使用嵌套的范围 for 循环(C++11 及以上),因为它简洁且易读。如果你使用的是较旧的 C++ 标准,可以选择使用嵌套的传统迭代器方法。foreach 宏虽然方便,但在现代 C++ 代码中不推荐使用。Java 风格的迭代器在 Qt 中支持,但使用相对较少。选择哪种方法取决于你的具体需求和代码风格。

3.关联知识

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值