int a[5] = {5,2,3,2,4}
如果我有这样的数组,我想得到唯一的
不
5,2,3,4
但
5,3,4
任何重复的号码都将被删除。
我尝试过使用std::<set>
const size_t len = sizeof(a) / sizeof(a[0]);
std::set<int> s(a, a + len);
然而,它不起作用,因为它会产生独特的:
5,2,3,4
答案 0 :(得分:3)
您可以将std::multiset与std::multiset::count一起使用,并仅在具有相同键的元素数量恰好等于.tabs {
background-color: #353A41;
border: 0;
}
.tabs a{
color: #FFFFFF;
}
.tabs :hover{
background-color: #2A2E34;
}
时获取元素。 e.g。
1
结果:
int a[5] = {5,2,3,2,4};
const size_t len = sizeof(a) / sizeof(a[0]);
multiset<int> m(a, a + len);
vector<int> v;
copy_if(begin(a), end(a), back_inserter(v), [&m](auto i) { return m.count(i) == 1; });
copy(v.begin(), v.end(), ostream_iterator<int>(cout, " "));
如果你不能使用lambda,你可以改写编写器,或者直接编写循环而不是5 3 4
。
copy_if
答案 1 :(得分:0)
std::sort
std::unique
std::unique
将迭代器返回到分区的边界(一个超过最后一个唯一元素)。uniques \ duplicates
。使用范围std::set_difference
和[begin,boundary[
[boundary, end[