Removing things that occur once only from an array
I wonder if there is a better way…
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #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; } } |