File tree Expand file tree Collapse file tree 5 files changed +27
-21
lines changed Expand file tree Collapse file tree 5 files changed +27
-21
lines changed Original file line number Diff line number Diff line change @@ -16,10 +16,10 @@ float* p = malloc(N * sizeof(float));
16
16
p [0 ] = a [2 ];
17
17
p [1 ] = a [1 ];
18
18
p [2 ] = a [0 ];
19
+ free (a );
19
20
20
21
asub (& p [0 ], & N );
21
22
22
- free (a );
23
23
free (p );
24
24
25
25
printf ("OK: C contiguous array\n" );
Original file line number Diff line number Diff line change
1
+ // std::vector is contiguous since C++17
2
+ // https://en.cppreference.com/w/cpp/named_req/ContiguousContainer
3
+ // https://en.cppreference.com/w/cpp/container/vector
4
+
1
5
#include < cstdlib>
2
- #include < memory >
6
+ #include < vector >
3
7
#include < iostream>
4
8
5
9
#include " contiguous.h"
@@ -8,12 +12,12 @@ int main(){
8
12
9
13
size_t dims[1 ] = {3 };
10
14
11
- auto a = std::make_unique <float []> (3 );
15
+ std::vector <float > a (3 );
12
16
13
17
for (size_t i = 0 ; i < 3 ; ++i)
14
- a. get () [i] = i+1 ;
18
+ a[i] = i+1 ;
15
19
16
- asub (&a. get () [0 ], dims);
20
+ asub (&a[0 ], dims);
17
21
18
22
std::cout << " OK: C++ contiguous array\n " ;
19
23
Original file line number Diff line number Diff line change 1
1
#include < iostream>
2
- #include < memory >
2
+ #include < vector >
3
3
#include < cstdlib>
4
4
5
5
#include " my_vector.h"
@@ -9,22 +9,22 @@ int main()
9
9
{
10
10
std::size_t N = 3 ;
11
11
12
- auto x = std::make_unique <int []> (N);
13
- auto x2 = std::make_unique <int []> (N);
12
+ std::vector <int > x (N);
13
+ std::vector <int > x2 (N);
14
14
15
15
for (size_t i = 0 ; i < N; ++i)
16
- x. get () [i] = i+1 ;
16
+ x[i] = i+1 ;
17
17
18
- timestwo_f (&x. get () [0 ], &x2. get () [0 ], &N);
18
+ timestwo_f (&x[0 ], &x2[0 ], &N);
19
19
20
20
for (auto i=0u ; i < N; i++){
21
- if (x2. get () [i] != 2 *x. get () [i]){
22
- std::cerr << " value " << x2. get () [i] << " !=" << x. get () [i] << std::endl;
21
+ if (x2[i] != 2 * x [i]){
22
+ std::cerr << " value " << x2[i] << " !=" << x[i] << std::endl;
23
23
return EXIT_FAILURE;
24
24
}
25
25
}
26
26
27
- std::cout << " OK: C++ make_unique \n " ;
27
+ std::cout << " OK: C++ std::vector pre-allocated \n " ;
28
28
29
29
return EXIT_SUCCESS;
30
30
}
Original file line number Diff line number Diff line change 1
1
#include < iostream>
2
- #include < memory >
2
+ #include < vector >
3
3
#include < cstdlib>
4
4
5
5
#include " my_pointer.h"
8
8
int main ()
9
9
{
10
10
size_t N = 3 ;
11
- auto a = std::make_unique <float []> (N);
12
- auto b = std::make_unique <float []> (N-1 );
11
+ std::vector <float > a (N);
12
+ std::vector <float > b (N-1 );
13
13
14
14
for (size_t i = 0 ; i < 3 ; ++i)
15
- a. get () [i] = i+1 ;
15
+ a[i] = i+1 ;
16
16
17
- point23 (&a. get () [0 ], &b. get () [0 ], &N);
17
+ point23 (&a[0 ], &b[0 ], &N);
18
18
19
- if (b. get () [0 ] != a. get () [1 ] || b. get () [1 ] != a. get () [2 ]){
20
- std::cerr << " value " << b. get () [0 ] << " !=" << a. get () [1 ] << " or " << b. get () [1 ] << " !=" << a. get () [2 ] << std::endl;
19
+ if (b[0 ] != a[1 ] || b[1 ] != a[2 ]){
20
+ std::cerr << " value " << b[0 ] << " !=" << a[1 ] << " or " << b[1 ] << " !=" << a[2 ] << std::endl;
21
21
return EXIT_FAILURE;
22
22
}
23
23
Original file line number Diff line number Diff line change @@ -9,18 +9,20 @@ int main()
9
9
10
10
std::vector<int > x = {0 , 1 , 2 };
11
11
auto N = x.size ();
12
+
12
13
std::vector<int > x2 (N);
13
14
14
15
timestwo_f (&x.front (), &x2.front (), &N);
15
16
16
17
for (auto i=0u ; i < x2.size (); i++){
18
+ std::cout << x2[i] << " \n " ;
17
19
if (x2[i] != 2 *x[i]){
18
20
std::cerr << " value " << x2[i] << " !=" << x[i] << std::endl;
19
21
return EXIT_FAILURE;
20
22
}
21
23
}
22
24
23
- std::cout << " OK: vector\n " ;
25
+ std::cout << " OK: C++ std:: vector\n " ;
24
26
25
27
return EXIT_SUCCESS;
26
28
}
You can’t perform that action at this time.
0 commit comments