This is the answer of Exercise #9: No for-loops.
Replace the for-loop. You will need:
- std::replace (or std::replace_if with std::bind2nd)
#include <vector> void ReplaceZeroByOne(std::vector<int>& v) { const int sz = v.size(); for (int i=0; i!=sz; ++i) { if(v[i]==0) v[i]=1; } }
Answer using std::replace
The preferred way: it is easiest to read and shortest to write.
#include <vector> #include <algorithm void ReplaceZeroByOne(std::vector<int>& v) { std::replace(v.begin(),v.end(),0,1); }
Answer using std::replace_if
Not preferred, use the solution above instead.
#include <vector> #include <algorithm #include <numeric> void ReplaceZeroByOne(std::vector<int>& v) { std::replace_if(v.begin(),v.end(), std::bind2nd(std::equal_to<int>(),0),1); }