forked from keineahnung2345/cpp-code-snippets
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharray_length.cpp
31 lines (26 loc) · 855 Bytes
/
array_length.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
#include <set>
using namespace std;
//https://stackoverflow.com/questions/4108313/how-do-i-find-the-length-of-an-array
//Method 1: will return wrong answer
template<class T>
int get_length(T* arr){
// cout << arr[0] << endl;
// cout << "size of total array: " << sizeof(arr) << endl;
// cout << "size of an element: " << sizeof(*arr) << endl;
// cout << "array length: " << sizeof(arr)/sizeof(*arr) << endl;
return sizeof(arr)/sizeof(*arr);
}
//Method 2: correct
template<class T, size_t N>
constexpr size_t size(T (&)[N]) { return N; }
int main()
{
char arrA[] = {'A', 'B', 'C'};
int arrB[] = {1, 4, 6, 2, 1};
cout << get_length(arrA) << endl; //8, wrong!
cout << get_length(arrB) << endl; //2, wrong!
cout << size(arrA) << endl; //3
cout << size(arrB) << endl; //5
return 0;
}