我正在解决问题,我需要完成这项任务。
我想以这样的方式添加对(p1,q1),(p2,q2)..(pn,qn)
(i)重复对只添加一次(如套装中) (ii)我存储计数每对添加多少时间。例如:(7,2)对 只会出现一次,但如果我加3次,则会有3次。
哪个容器对c ++中的这个问题有效?
很少的例子会很棒!
请问你是否理解我的问题并抱歉英语不好。
答案 0 :(得分:4)
std::map<Key, Value>
如何将你的对(Key)映射到它们的计数,当你插入时,递增一个计数器(Value)。
using pairs_to_count = std::map<std::pair<T1, T2>, size_t>;
std::pair<T1, T2> p1 = // some value;
std::pair<T1, T2> p2 = // some other value;
pairs_to_count[p1]++;
pairs_to_count[p1]++;
pairs_to_count[p2]++;
pairs_to_count[p2]++;
pairs_to_count[p2]++;
在此代码中,operator[]
会自动在地图中添加密钥(如果该密钥尚不存在)。此时,它会将密钥的相应值初始化为零。但是当你插入时,即使是第一次,该值也会增加。
第一次插入后,计数1正确反映了插入次数。当你插入更多时,该值会增加。
稍后,检索计数是再次调用operator[]
以获取与给定密钥相关联的值。
size_t const p2_count = pairs_to_count[p2]; // equals 3