51 for (
size_t i = 0; i < _data.size(); ++i)
72 assert(j < _ptrLine.size());
73 return { _ptrLine[j], _wLine };
80 assert(j < _ptrLine.size());
81 return { _ptrLine[j], _wLine };
95 const T&
Get(std::size_t j, std::size_t i)
const
97 assert(j < _ptrLine.size());
99 return _ptrLine[j][i];
107 for (
auto& iter : _data)
117 assert(vec.size() == _w);
118 _data.insert(_data.end(), vec.begin(), vec.end());
119 _rebuild_ptr_line(_ptrLine.size() + 1);
123 bool IsEmpty()
const {
return _data.empty(); }
127 return (
const std::byte*)_data.data();
147 return (
unsigned)_ptrLine.size();
163 return _data.size() *
sizeof(
T);
168 return _data.begin();
175 std::vector<T> _data;
176 std::vector<T*> _ptrLine;
177 std::vector<std::size_t> _wLine;
179 void _init(
const Size& size)
183 _rebuild_ptr_line(size[1]);
186 void _rebuild_ptr_line(std::size_t h)
189 for (
size_t i = 0; i < _ptrLine.size(); ++i)
190 _ptrLine[i] = _data.data() + i;
const std::span< T > operator[](std::size_t j) const
返回第j行
void Resize(const Size &size)
调整为指定大小
std::span< T > operator[](std::size_t j)
返回第j行
unsigned GetHeight() const
void PushBack(std::vector< T > &vec)
插入行
unsigned GetSizeMul() const
const std::byte * GetBuffer() const
Table2(const Size &size, const T *p)
以指定大小构造,并传入指针赋值初始化
unsigned GetWidth() const
const T * GetData() const
Table2(const Size &size)
以指定大小构造
const T & Get(std::size_t j, std::size_t i) const
返回第j行 第i个
constexpr auto Mul(const C &container)
求积product