Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- //int strlenM(const char* str)
- //{
- // int len{ 0 };
- // for (; *str++; ++len);
- // return len;
- //}
- template <typename T>
- void forEach(T* arrB, T* arrE, void(*action)(T& el))
- {
- while (arrB != arrE)
- {
- if (action) { action(*arrB++); };
- }
- }
- void printElement(int& el)
- {
- std::cout << el << ' ';
- };
- template <typename T>
- bool trueer(const T& el) { return true; }
- template <typename T>
- bool falseer(const T& el) { return false; }
- template <typename T>
- bool evener(const T& el){ return !(el % 2);}
- template <typename T>
- bool odder(const T& el){ return (el % 2); }
- template <typename T>
- int copy_if(T* srcB, T* srcE, T* destB, T* destE, bool(*pred)(const T& el))
- {
- int copyCount{ 0 };
- while (srcB != srcE and destB != destE)
- {
- if (pred(*srcB))
- {
- *destB++ = *srcB;
- ++copyCount;
- }
- ++srcB;
- }
- return copyCount;
- }
- //void printArr(int* ptr, int size)
- //{
- // for (auto elP{ ptr }; elP != (ptr + size); ++elP)
- // {
- // std::cout << *elP << ' ';
- // }
- // std::cout << '\n';
- //}
- //template <typename T>
- //int copy_if(T* srcB, T* srcE, T* destB, T* destE, bool(*pred)(const T& el))
- //{
- // int count{ 0 };
- // for (auto elP{ srcB }; (elP != srcE) && (destB + count != destE); ++elP)
- // {
- // const int& elm{ *elP };
- // if (pred(elm))
- // {
- // *(destB + count) = *elP;
- // ++count;
- // }
- // }
- // return count;
- //}
- int main()
- {
- const int arrSize{ 10 };
- int arr[arrSize]{ 1,2,3,4,5,6,7,8,9,10 };
- int* arrBegin{ arr };
- int* arrEnd{ arr + arrSize };
- const int arr1Size{ 10 };
- int arr1[arr1Size]{};
- int* arr1Begin{ arr1 };
- int* arr1End{ arr1 + arr1Size };
- forEach(arrBegin, arrEnd, printElement);
- std::cout << '\n';
- forEach(arr1Begin, arr1End, printElement);
- std::cout << '\n';
- int copyCount = copy_if(arrBegin+2, arrEnd-2, arr1Begin+2, arr1End-2, evener);
- forEach(arr1Begin, arr1End, printElement);
- std::cout << '\n' << copyCount << " elements copied\n";
- std::cout << '\n';
- //copyCount = copy_if(arrBegin, arrEnd, arr1Begin, arr1End, odder);
- //forEach(arr1Begin, arr1End, printElement);
- //std::cout << '\n' << copyCount << " elements copied\n";
- //std::cout << '\n';
- ////char str[15]{ 'H','e','0','o','!','\0'};
- //int strSize{ 15 };
- //char* string{ new char[strSize] };
- //char str[20]{ "Hello, world!" };
- //int arr[5]{ 1,2,3,4,5 };
- //std::cout << str << ' ' << strlenM(str) << '\n';
- //std::cout << str << ' ' << strlenM(str) << '\n';
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement