如果向量由这些数字{{1}}组成,我怎么可能打印出重复一次以上的数字,所以基本上应该打印: {{1}}。
答案 0 :(得分:0)
这样做
int sample[]= {55,55,55,55,1,23,45};
std::set<int> myset(sample, sample + sizeof(myset));
for(set<int>::iterator iter=myset.begin(); iter!=myset.end();++iter) cout<<(*iter)<<endl;
return 0;
答案 1 :(得分:0)
根据评论建议,您可以使用std::unordered_set
或std::set
:
#include <unordered_set>
#include <vector>
#include <iostream>
int main()
{
std::unordered_set<int> tempSet;
std::vector<int> vec { 55, 55, 55, 1, 23, 45 };
for ( auto& val : vec )
{
if (!tempSet.count(val))
std::cout << val << " ";
tempSet.insert(val);
}
}
对于向量中的每个项目,set::count()
用于确定项目是否已在集合中。如果不在集合中,则打印该值。
编辑:
我可以将insert()
电话放在if()
:
if (!tempSet.count(val))
{
std::cout << val << " ";
tempSet.insert(val);
}
但我将其放在if()
之外,以证明即使您尝试存储重复项,set
也不会存储重复项。
答案 2 :(得分:0)
基本上,
vector <int> b;
b.push_back(55);
b.push_back(55);
b.push_back(55);
b.push_back(25);
b.push_back(23);
b.push_back(2);
set <int> a;
for (auto it : b) a.insert(it);
for (auto it : a)
cout << it;