blob: 2011e8c285468a2d4c04dc31efae49f69afc2c09 (
plain)
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
|
#pragma once
#include <stddef.h>
template<typename T>
class slice
{
T* ptr;
size_t len;
public:
slice(T* ptr, size_t len): ptr(ptr), len(len) {}
T* begin() { return ptr; }
T* end() { return ptr + len; }
const T* begin() const { return ptr; }
const T* end() const { return ptr + len; }
};
namespace std {
template<typename T>
ostream& operator<<(ostream& os, const slice<T>& x) {
os << "[";
bool first = true;
for(const auto& e : x)
{
if(!first)
os << ",";
first = false;
os << e;
}
os << "]";
return os;
}
}
|