sEMU
载入中...
搜索中...
未找到
container.hpp
浏览该文件的文档.
1#pragma once
2
3#include <vector>
4#include <iterator>
5#include <cstddef>
6
7namespace sEMU {
8
12template <typename T>
14public:
15 using value_type = T;
16
17 SimpleBuffer(std::initializer_list<T> list) : data_(list) {}
18
19 // 自定义迭代器类
20 class Iterator {
21 public:
22 using iterator_category = std::forward_iterator_tag;
23 using difference_type = std::ptrdiff_t;
24 using value_type = T;
25 using pointer = T*;
26 using reference = T&;
27
28 Iterator(pointer ptr) : ptr_(ptr) {}
29
30 reference operator*() const { return *ptr_; }
31 pointer operator->() { return ptr_; }
32
33 // 前置自增
35 ptr_++;
36 return *this;
37 }
38
39 // 后置自增
41 Iterator tmp = *this;
42 ++(*this);
43 return tmp;
44 }
45
46 friend bool operator==(const Iterator& a, const Iterator& b) { return a.ptr_ == b.ptr_; }
47 friend bool operator!=(const Iterator& a, const Iterator& b) { return a.ptr_ != b.ptr_; }
48
49 private:
51 };
52
53 Iterator begin() { return Iterator(data_.data()); }
54 Iterator end() { return Iterator(data_.data() + data_.size()); }
55
56private:
57 std::vector<T> data_;
58};
59
60} // namespace sEMU
定义 container.hpp:20
reference operator*() const
定义 container.hpp:30
T * pointer
定义 container.hpp:25
Iterator operator++(int)
定义 container.hpp:40
friend bool operator!=(const Iterator &a, const Iterator &b)
定义 container.hpp:47
Iterator & operator++()
定义 container.hpp:34
Iterator(pointer ptr)
定义 container.hpp:28
T & reference
定义 container.hpp:26
pointer operator->()
定义 container.hpp:31
T value_type
定义 container.hpp:24
std::forward_iterator_tag iterator_category
定义 container.hpp:22
std::ptrdiff_t difference_type
定义 container.hpp:23
pointer ptr_
定义 container.hpp:50
friend bool operator==(const Iterator &a, const Iterator &b)
定义 container.hpp:46
std::vector< T > data_
定义 container.hpp:57
SimpleBuffer(std::initializer_list< T > list)
定义 container.hpp:17
T value_type
定义 container.hpp:15
Iterator begin()
定义 container.hpp:53
Iterator end()
定义 container.hpp:54
定义 container.hpp:7