Difference between revisions of "CPP/STL/ForEach"

From ProgrammingExamples
< CPP
Jump to: navigation, search
(Created page with '<source lang = "cpp"> #include <iostream> #include <algorithm> #include <vector> using namespace std; void showSquaredValue(const int n){ cout << n << "*" << n << " = " …')
 
Line 1: Line 1:
 +
==ForEach.cpp==
 
<source lang = "cpp">
 
<source lang = "cpp">
 
 
#include <iostream>
 
#include <iostream>
 
#include <algorithm>
 
#include <algorithm>
 
#include <vector>
 
#include <vector>
  
using namespace std;
+
struct printFunctor
 
+
{
void showSquaredValue(const int n){
+
  void operator() (int x)
cout << n << "*" << n  << " = " << n*n << endl;  
+
  {
 +
    std::cout << x;
 +
  }
 +
 
 
};
 
};
  
class RepeatSequence{
+
int main()
int begin, end;
+
{
int offset;
+
  std::vector<int> v;
public:
+
  v.push_back(1);
RepeatSequence(int first, int last): begin(first),end(last - 1), offset(begin - 1){}
+
  v.push_back(2);
RepeatSequence(): begin(),end(), offset(){}
+
  v.push_back(3);
int operator()(){
+
return offset = offset >= end ? begin: offset + 1;
+
}
+
};
+
  
int main(){
+
  printFunctor myPrint;
vector<int> num;
+
  std::for_each(v.begin(), v.end(), myPrint);
const int MAX = 10;
+
+
std::generate_n(std::back_insert_iterator<vector<int>>( num ),
+
MAX,
+
RepeatSequence(0,5)
+
);
+
  
//for each values in the vector num, show its squared value
+
  return 0;
std::for_each(num.begin(),num.end(),showSquaredValue);
+
}
 +
</source>
  
  return 0;
+
==CMakeLists.txt==
}</source>
+
<source lang="cmake">
 +
cmake_minimum_required(VERSION 2.6)
 +
 
 +
PROJECT(ForEach)
 +
ADD_EXECUTABLE(ForEach ForEach.cpp )
 +
 
 +
</source>

Revision as of 09:19, 26 February 2011

ForEach.cpp

#include <iostream>
#include <algorithm>
#include <vector>
 
struct printFunctor
{
  void operator() (int x)
  {
    std::cout << x;
  }
 
};
 
int main()
{
  std::vector<int> v;
  v.push_back(1);
  v.push_back(2);
  v.push_back(3);
 
  printFunctor myPrint;
  std::for_each(v.begin(), v.end(), myPrint);
 
  return 0;
}

CMakeLists.txt

cmake_minimum_required(VERSION 2.6)
 
PROJECT(ForEach)
ADD_EXECUTABLE(ForEach ForEach.cpp )