gpt4 book ai didi

c++ - 获取类型为 map> 的两个容器之间差异的最佳方法

转载 作者:行者123 更新时间:2023-11-30 01:55:50 25 4
gpt4 key购买 nike

我有以下两个容器

map <classId, set< studentId> > allStudents;
map <classId, set< studentId> > assocStudents;

其中 assocStudents 是所有学生的子集。获得 allStudents 减去 assocStudents 的差值以获得 unassocStudents 的最有效方法是什么?

map <classId, set< studentId> > unassocStudents;

我能想到的最好的是

  1. 遍历 allStudents 中的每个类(class),在 assocStudents 中搜索该 classId。
  2. 如果类(class)存在于assocStudents中,做一个studentId的set_difference;
  3. 否则复制整个 studentId 集。

有没有更聪明的方法来做到这一点?

编辑:

我对提供的答案有点迷茫。

假设我有以下数据

 allStudents contains classId 1, studentId {1, 11, 111, 1111}
classId 2, studentId (2, 22, 222, 2222}
assocStudents contains classId 2, studentId {22, 2222}

我喜欢最后的容器

 unassocStudents contains classId 1, studentId {1, 11, 111, 1111}
classId 2, studentId (2, 222}

set_difference 不会给我以下信息

 unassocStudents contains classId 1, studentId {1, 11, 111, 1111}

最佳答案

只需使用 std::set_difference

#include  <iterator>

std::set_difference(allStudents.begin(), allStudents.end(),
assocStudents.begin(), assocStudents.end(),
std::inserter(unassocStudents, unassocStudents.end()));

关于c++ - 获取类型为 map<classId, set<studentId>> 的两个容器之间差异的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370792/

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