Removing things that occur once only from an array
I wonder if there is a better way…
#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;
void remonce(vector<int> &array) {
map<int,int> counts;
for(size_t n=0;n<array.size();n++) {
counts[array[n]]++;
}
vector<int> newarray;
for(size_t n=0;n<array.size();n++) {
if(counts[array[n]] != 1) {
newarray.push_back(array[n]);
}
}
array = newarray;
}
int main() {
vector<int> array;
array.push_back(4);
array.push_back(4);
array.push_back(3);
array.push_back(3);
array.push_back(8);
array.push_back(16);
array.push_back(8);
remonce(array);
for(size_t n=0;n<array.size();n++) {
cout << array[n] << endl;
}
}