Guest User

Untitled

a guest
Feb 16th, 2019
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.66 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. // First method
  4. template<typename Arr>
  5. std::size_t array_size_1(const Arr& arr)
  6. {
  7. return sizeof(arr)/sizeof(arr[0]);
  8. }
  9. // Second method
  10. template<typename T, std::size_t sz>
  11. std::size_t array_size_2(const T (&arr)[sz])
  12. {
  13. return sz;
  14. }
  15.  
  16. int main() {
  17. int arr[] = {1,2,3,4,5};
  18. std::string sarr[] = {"abc", "def", "ghj"};
  19. std::cout << array_size_1(arr) << "n";
  20. std::cout << array_size_2(sarr) << "n";
  21. return 0;
  22. }
  23.  
  24. #define NELEM(x) (sizeof(x) / sizeof (x)[0])
  25.  
  26. int *p = nullptr;
  27. std::vector<int> v;
  28. size_t a = array_size_2(p); // ERROR
  29. size_t b = array_size_2(v); // ERROR
  30.  
  31. int foo(int a[]) {
  32. return array_size_1(a); // OOPS!
  33. }
Add Comment
Please, Sign In to add comment