C ++中的向量数组

时间:2017-03-19 00:07:26

标签: c++ arrays vector

如果向量由这些数字{{1}}组成,我怎么可能打印出重复一次以上的数字,所以基本上应该打印: {{1}}。

3 个答案:

答案 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_setstd::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); 
   }
}

Live Example

对于向量中的每个项目,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;