Erase all value in a vector more than three standard deviations less than the mean with erase() remove_if() and bind2nd : vector erase « vector « C++ Tutorial

Home
C++ Tutorial
1.Language Basics
2.Data Types
3.Operators statements
4.Array
5.Development
6.Exceptions
7.Function
8.Structure
9.Class
10.Operator Overloading
11.Pointer
12.File Stream
13.template
14.STL Introduction
15.string
16.vector
17.list
18.bitset
19.set multiset
20.valarray
21.queue stack
22.deque
23.map multimap
24.STL Algorithms Modifying sequence operations
25.STL Algorithms Non modifying sequence operations
26.STL Algorithms Binary search
27.STL Algorithms Sorting
28.STL Algorithms Merge
29.STL Algorithms Min Max
30.STL Algorithms Iterator
31.STL Algorithms Heap
32.STL Algorithms Helper
C / ANSI-C
C Tutorial
C++
Visual C++ .NET
C++ Tutorial » vector » vector erase 
16.13.8.Erase all value in a vector more than three standard deviations less than the mean with erase() remove_if() and bind2nd
#include <algorithm>
#include <cmath>
#include <functional>
#include <iostream>
#include <list>
#include <numeric>
#include <vector>

using namespace std;

template <class T>
void print(T& c){
   fortypename T::iterator i = c.begin(); i != c.end(); i++ ){
      std::cout << *i << endl;
   }
}

int main( )
{
   const float a[] 11.31.50.90.10.2};

   // create and initialize vector with above data
   vector<float> dataa,a + sizeof/ sizeofa[0] ) );

   cout << "DATA VECTOR HAS " << data.size() << " ELEMENTS\n";
   printdata  );

   // compute the mean
   float mean = accumulatedata.begin(), data.end()0.0f )/ data.size();

   // subtract the mean from every data point
   vector<float> zero_meandata );
   transformzero_mean.begin(), zero_mean.end(), zero_mean.begin(),bind2ndminus<float>(), mean ) );

   // compute the sample standard deviation
   float deviation = inner_productzero_mean.begin(),zero_mean.end(), zero_mean.begin()0.0f );
   deviation = sqrtdeviation / data.size() ) );

   const int num_deviations = 3;
   // erase all points more than three standard deviations less than the mean
   data.eraseremove_ifdata.begin(), data.end(),bind2ndless<float>(), mean - num_deviations * deviation ) ),data.end() );

}
16.13.vector erase
16.13.1.Remove(delete) all elements in the vector
16.13.2.Erase first element
16.13.3.erase the numbers 2 through 5 in v1
16.13.4.insert and erase.
16.13.5.Use unique_copy to remove duplicate words
16.13.6.Erase adjacent duplicates
16.13.7.Erase all value in a vector more than three standard deviations greater than the mean
16.13.8.Erase all value in a vector more than three standard deviations less than the mean with erase() remove_if() and bind2nd
www.java2java.com | Contact Us
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.