-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharray2d.h
64 lines (61 loc) · 1.28 KB
/
array2d.h
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#pragma once
#include <vector>
#include <cmath>
#include <tuple>
#include <iostream>
template<class T>
class array2d{
public:
array2d(){
array2d(0,0,0);
}
array2d(int size_x,int size_y,T init_val):pitch(size_x),sizex(size_x),sizey(size_y){
data.assign(size_x * size_y,init_val);
}
array2d(array2d<T> &a){
data = a.getData();
sizex=a.sizeX();
sizey=a.sizeY();
pitch=sizex;
}
const std::vector<T> getData(){
return data;
}
int getPitch(){
return pitch;
}
T& getElementReference(int x, int y){
return data[x + pitch * y];
}
T& operator()(int x, int y){
return getElementReference(x,y);
}
int const sizeX(){
return sizex;
}
int const sizeY(){
return sizey;
}
auto begin(){
return std::begin(data);
}
auto end(){
return std::end(data);
}
private:
int pitch;
std::vector<T> data;
int sizex;
int sizey;
};
template<class T>
bool printArray(array2d<T> arr){
// std::cout<<arr.sizeX()<<", "<<arr.sizeY()<<"\n";
for(int i=0;i<arr.sizeX();++i){
for(int j=0;j<arr.sizeY();++j){
std::cout << arr(i,j) << "\t";
}
std::cout << "\n";
}
return true;
}