Re: std::vector initialization
buchtak@gmail.com wrote:
std::vector<int> myVec;
...
void foo( std::vector<int> &v ) { ... }.
What i need to do is to process (by foo()) only part of the vector
myVec (for example second half, or some interval). The straightforward
solution may be to make a deep copy of the second half of myVec and
then pass it to the function foo(), or to change the header of the
function foo() to take arguments like int first and int size (or
iterators), but that's unhandy for me.
I know it looks like ancient Greek now, but once you get used to it,
you'll love it. :)
#include <algorithm>
#include <functional>
#include <iostream>
namespace {
using std::for_each;
struct foo_function
: std::unary_function<int, void>
{
template<class T>
void operator()(T const& t) const {
std::cout << "foo(" << t << ")\n";
}
template<class Input_iterator>
void operator()(
Input_iterator begin
, Input_iterator end) const {
for_each(begin, end, *this);
}
};
foo_function const foo = foo_function( );
}
#include <vector>
int main() {
int const ints[] = { 1, 2, 3, 4, 5 };
std::vector<int> const a_vector( ints, ints + 5 );
foo(a_vector.begin() + 3, a_vector.end());
return 0;
}