gpt4 book ai didi

c++ - 使用 qt 在 vector 中查找重复项

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:29 24 4
gpt4 key购买 nike

我有一个 csv 文件,其内容如下所示:

Source  Target  LinkId  LinkName    Throughput
==================================================
1 12 1250 link1250 5
1 12 3250 link3250 14
1 14 1250 link1250 5
1 14 3250 link3250 14
1 18 1250 link1250 5
1 18 3250 link3250 14
2 12 2250 link2250 5
2 12 5250 link5250 14
2 14 2250 link2250 5
2 14 5250 link5250 14
2 18 2250 link2250 5
2 18 5250 link5250 14

等等。目标是找到从每个源节点多播的链接数,即对于源 1,目标是 12,14,18,对于 linkID 1250,对于 linkID 3250,对于源 1,目标是 12,14, 18 等等。

我一直在使用 Qt 并将 csv 读入结构 vector ,如下所示:

struct edgeDetails_t{
int source;
int target;
int linkID;
QString linkName;
int throughput;
};
QVector<edgeDetails_t> multiCastLinks;

为了实现上述目标,我尝试使用QHash

QHash<int, QList<int>> multiCastSenders;

以来源为关键,但我不确定这是否是正确的做法。有人可以让我知道执行此操作的任何其他方法吗。

最佳答案

这对于允许多个键的 QMultiMap 也是可能的,然后您可以使用方法 keys() 获取键和 values(key) 获取相应的值。

要去除重复值,您可以使用 toSet(),它只返回相应列表的唯一值。

QMultiMap<int, int> test;
test.insert(1, 12);
test.insert(1, 12);
test.insert(1, 12);
test.insert(1, 14);
test.insert(1, 18);
test.insert(1, 18);

test.insert(2, 12);
test.insert(2, 12);
test.insert(2, 12);
test.insert(2, 14);
test.insert(2, 18);
test.insert(2, 18);
qDebug() << "size:" << test.size();
QSet<int>::iterator it;
QSet<int> keys = test.keys().toSet();
qDebug() << "keys:" << keys;
for(it = keys.begin(); it != keys.end(); ++it) {
qDebug() << "key:" << *it << "value:" << test.values(*it).toSet();
}

输出:

size: 12
keys: QSet(1, 2)
key: 1 value: QSet(12, 14, 18)
key: 2 value: QSet(12, 14, 18)

你可以用你的酷结构找出其余部分。

HTH

关于c++ - 使用 qt 在 vector 中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38822570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com