Tuesday, February 5, 2013

How to extract distinct values from the C++ Array?

#include<iostream>
#include<set>
using namespace std;
// function setting the set values
template<size_t size>
void findDistinctValues(std::set<int> & p_values,int (&p_array)[size])
{
    // Code modified after Jacob's excellent comment
    p_values.clear() ;
    p_values.insert(p_array, p_array + size) ;

}

void findDistinctValues2( int arr[],int size)
{
  std::set<int> values_1 ;
  std::set<int>::iterator it_1;
  values_1.clear();
  values_1.insert(arr,arr+size);
  for (it_1=values_1.begin(); it_1!=values_1.end(); ++it_1)
    std::cout << ' ' << *it_1<<endl;
   
}

int main()
{
  int arr[] = {1,6100,4,94,93,-6,2,4,4,5,5,2500,5,4,5,34,99,6100,2500};
  std::set<int> values ;
  std::set<int>::iterator it;
 
  int arr_size = sizeof(arr)/sizeof(int);
  printf("Total no of array variables: %d\n",arr_size);
  printf("Output from findDistinctValues (function 1)\n ");
  findDistinctValues(values, arr) ;
  for (it=values.begin(); it!=values.end(); ++it)
    std::cout << ' ' << *it<<endl;
  std::cout<<endl;  
  std::cout<<values.size()<<endl; //find the size of distict values

  printf("Output from findDistinctValues (function 2) \n ");
  findDistinctValues2(arr,arr_size);

  getchar();
  return 0;
}

Modified from stackoverflow.com

C++

0 comments :

Post a Comment

 

© 2011 GIS and Remote Sensing Tools, Tips and more .. ToS | Privacy Policy | Sitemap

About Me