55 template <
class Container>
58 using cIterator =
typename Container::const_iterator;
78 View(Container &container) :
87 View(Container &container,
size_t start_pos,
size_t end_pos) :
107 return *std::next(
begin_, pos);
116 auto at(
size_t pos)
const ->
decltype(*begin_) {
118 throw IndexError(std::to_string(pos) +
" out of 0 ~ "
119 + std::to_string(
size() - 1));
135 template <
class Container>
153 View(
const Container &container) :
162 View(
const Container &container,
size_t start_pos,
size_t end_pos) :
176 return *std::next(
begin_, pos);
179 auto at(
size_t pos)
const ->
decltype(*begin_) {
181 throw IndexError(std::to_string(pos) +
" out of 0 ~ "
182 + std::to_string(
size() - 1));
220 throw IndexError(std::to_string(pos) +
" out of 0 ~ "
221 + std::to_string(
size() - 1));
253 const T &
at(
size_t pos)
const {
255 throw IndexError(std::to_string(pos) +
" out of 0 ~ "
256 + std::to_string(
size() - 1));
271 template <
class CharT,
class Traits>
272 inline std::basic_ostream<CharT, Traits> &
operator<<(
273 std::basic_ostream<CharT, Traits> &os,
const View<std::string> &sv) {
274 for (
auto it = sv.begin(); it != sv.end(); ++it) os << *it;
287 template <
class CharT,
class Traits,
class Container>
288 std::basic_ostream<CharT, Traits> &
operator<<(
290 return os << v.collect();
307 template <
class Container>
318 template <
class Container>
331 template <
class Container>
333 return {cont, start, end};
344 template <
class Container>
345 View<const Container>
346 make_view(
const Container &cont,
size_t start,
size_t end) {
347 return {cont, start, end};
357 template <
class Container>
359 typename Container::iterator begin,
typename Container::iterator end) {
370 template <
class Container>
372 typename Container::const_iterator end) {
409 return {data, count};
421 return {data, count};
IndexError(const std::string &msg)
构造 IndexError。
Definition csexc.h:153
const T * const_iterator
Definition view.h:204
T & operator[](size_t pos) const
Definition view.h:216
View(T *begin, T *end)
Definition view.h:211
const T * cbegin() const
Definition view.h:208
T & at(size_t pos) const
Definition view.h:218
std::vector< T > collect() const
Definition view.h:225
T * iterator
Definition view.h:203
T * end_
Definition view.h:200
T * end() const
Definition view.h:207
T * begin() const
Definition view.h:206
T * begin_
Definition view.h:200
const T * cend() const
Definition view.h:209
size_t size() const
Definition view.h:214
View(T *data, size_t count)
Definition view.h:212
View(const Container &container, size_t start_pos, size_t end_pos)
构造常量容器子区间的视图。
Definition view.h:162
cIterator end() const
Definition view.h:145
Container collect() const
将常量视图中的元素复制到新容器。
Definition view.h:190
typename Container::const_iterator cIterator
Definition view.h:137
auto operator[](size_t pos) const -> decltype(*begin_)
Definition view.h:175
cIterator begin() const
Definition view.h:144
cIterator begin_
Definition view.h:138
View(const Container &container)
构造整个常量容器的视图。
Definition view.h:153
cIterator cend() const
Definition view.h:147
View(cIterator begin, cIterator end)
从常量迭代器对构造视图。
Definition view.h:171
cIterator iterator
Definition view.h:141
auto at(size_t pos) const -> decltype(*begin_)
Definition view.h:179
cIterator const_iterator
Definition view.h:142
size_t size() const
Definition view.h:173
cIterator end_
Definition view.h:138
cIterator cbegin() const
Definition view.h:146
const T * cbegin() const
Definition view.h:243
const T & operator[](size_t pos) const
Definition view.h:251
const T * begin() const
Definition view.h:241
const T * iterator
Definition view.h:238
View(const T *data, size_t count)
Definition view.h:247
const T * end() const
Definition view.h:242
std::vector< T > collect() const
Definition view.h:260
View(const T *begin, const T *end)
Definition view.h:246
const T * begin_
Definition view.h:235
const T * cend() const
Definition view.h:244
size_t size() const
Definition view.h:249
const T * const_iterator
Definition view.h:239
const T * end_
Definition view.h:235
const T & at(size_t pos) const
Definition view.h:253
容器的非拥有视图(可变版本)。
Definition view.h:56
Iterator begin() const
返回起始迭代器。
Definition view.h:66
cIterator cbegin() const
返回常量起始迭代器。
Definition view.h:70
Container collect() const
将视图中的元素复制到一个新的容器中。
Definition view.h:127
auto operator[](size_t pos) const -> decltype(*begin_)
无边界检查的下标访问。
Definition view.h:106
Iterator end_
Definition view.h:59
View(Iterator begin, Iterator end)
从迭代器对构造视图。
Definition view.h:96
auto at(size_t pos) const -> decltype(*begin_)
带边界检查的下标访问。
Definition view.h:116
typename Container::iterator Iterator
Definition view.h:57
cIterator const_iterator
Definition view.h:63
typename Container::const_iterator cIterator
Definition view.h:58
View(Container &container)
构造整个容器的视图。
Definition view.h:78
size_t size() const
返回视图中的元素个数。
Definition view.h:99
Iterator end() const
返回结束迭代器。
Definition view.h:68
View(Container &container, size_t start_pos, size_t end_pos)
构造容器子区间的视图。
Definition view.h:87
Iterator begin_
Definition view.h:59
cIterator cend() const
返回常量结束迭代器。
Definition view.h:72
Iterator iterator
Definition view.h:62
定义 console 库使用的自定义异常类层次结构。
View< Container > make_view(Container &cont)
创建整个容器的视图(可变版本)。
Definition view.h:308
MultiArray< decltype(std::declval< T >()<< std::declval< U >()), Dims... > operator<<(const MultiArray< T, Dims... > &a, const MultiArray< U, Dims... > &b)
Definition multiarray.h:1607
T next(typename Generator< Derived, T >::iterator &it)
从迭代器获取下一个值的辅助函数。
Definition gen.h:190
提供 STL 容器的格式化输出和灵活的输出控制工具。