🛰️航天仿真算法库 SpaceAST
0.0.1
载入中...
搜索中...
未找到
ValArray.hpp
浏览该文件的文档.
1
20
21
#pragma once
22
23
#include "AstGlobal.h"
24
#include "AstScript/Value.hpp"
25
26
AST_NAMESPACE_BEGIN
27
28
33
template
<
typename
T,
size_t
NDIM>
34
class
ValArray
:
public
Value
35
{
36
public
:
37
// AST_EXPR(ValArray)
38
ValArray
();
39
40
~ValArray
();
41
44
void
resize
(
size_t
size);
45
48
size_t
column
()
const
{
return
dims_[0]; }
49
52
size_t
row
()
const
{
return
dims_[1]; }
53
56
size_t
page
()
const
{
return
dims_[2]; }
57
60
size_t
size
()
const
;
61
65
T
at
(
size_t
index)
const
{
return
data_[index]; }
66
70
T&
at
(
size_t
index) {
return
data_[index]; }
71
72
protected
:
73
size_t
dims_[NDIM];
74
T* data_{
nullptr
};
75
};
76
77
78
template
<
typename
T,
size_t
NDIM>
79
ValArray<T, NDIM>::ValArray()
80
{
81
}
82
83
84
template
<
typename
T,
size_t
NDIM>
85
ValArray<T, NDIM>::~ValArray()
86
{
87
if
(data_)
88
delete
[] data_;
89
}
90
91
template
<
typename
T,
size_t
NDIM>
92
void
ValArray<T, NDIM>::resize
(
size_t
size)
93
{
94
size_t
old_size = this->size();
95
// 判断是否需要扩充数组大小
96
if
(old_size >= size)
97
{
98
T* old_data = data_;
99
data_ =
new
T[size];
100
if
(old_data)
101
{
102
size_t
copy_size = old_size < size ? old_size : size;
103
for
(
size_t
i = 0; i < copy_size; ++i)
104
data_[i] = old_data[i];
105
delete
[] old_data;
106
}
107
}
108
dims_[0] = size;
109
for
(
size_t
i = 1; i < NDIM; ++i)
110
dims_[i] = 1;
111
}
112
113
template
<
typename
T,
size_t
NDIM>
114
inline
size_t
ValArray<T, NDIM>::size
()
const
115
{
116
size_t
size = 1;
117
for
(
size_t
i = 0; i < NDIM; ++i)
118
{
119
size *= dims_[i];
120
}
121
return
size;
122
}
123
124
125
AST_NAMESPACE_END
126
ast::ValArray
数组值类
定义
ValArray.hpp:35
ast::ValArray::page
size_t page() const
获取数组页数
定义
ValArray.hpp:56
ast::ValArray::size
size_t size() const
获取数组元素数量
定义
ValArray.hpp:114
ast::ValArray::resize
void resize(size_t size)
重新调整数组大小
定义
ValArray.hpp:92
ast::ValArray::column
size_t column() const
获取数组列数
定义
ValArray.hpp:48
ast::ValArray::row
size_t row() const
获取数组行数
定义
ValArray.hpp:52
ast::ValArray::at
T & at(size_t index)
获取数组元素
定义
ValArray.hpp:70
ast::ValArray::at
T at(size_t index) const
获取数组元素
定义
ValArray.hpp:65
ast::Value
值对象基类
定义
Value.hpp:43
src
AstScript
Value
ValArray.hpp
制作者
1.12.0