重载运算符
// [] 循秩访问(允许负数索引)
T e = arr[index]; // 读
arr[index] = e; // 改
// + 返回两个vector合并产生的副本
Vector<T> v = v1 + v2;
// += 在末端追加(vec表示Vector<int>)
vec += 5; // 追加单个元素
vec += {5, 6}; // 追加初始化序列
vec += vec2; // 追加另一Vector<int>
// 注意:vec+=x 不等价于 vec=vec+x,后者会额外创建副本,对于Vector的所有派生类,类似的操作符都有这种区别
// 循秩访问(允许负数索引,索引范围:[-size, size) )
T get(int index);
// 在区间内按值查找值的索引(失败返回-1)
virtual RANK find(const T& value, RANK lo=0, RANK hi=-1);
// 截取区间
Vector<T> sub(RANK lo, RANK hi);
void put(RANK idx, const T& value);
// 插入单个元素
void insert(RANK idx, const T& value);
// 插入一段vector
void insert(RANK idx, const Vector<T> &v);
// 追加单个元素
void append(const T& value);
// 追加数组区间
void extend(const T* A, RANK lo, RANK hi);
// 追加一段序列
void extend(const initializer_list<T>&);
// 追加另一Vector
void extend(const Vector<T> &);
// 返回两个vector合并产生的副本
auto concat(Vector<T> v); // auto是为了便于派生类使用
// 按索引删除
T pop(RANK idx);
// 按值删除
RANK remove(const T& value);
// 删除区间
bool delRng(RANK lo, RANK hi);
// 清空
void clear();
// 长度
RANK size();
// 是否为空
bool empty();
void sort(RANK lo=0, RANK hi=-1);
template<typename VST> // VST是函数指针
void map(VST &visit);
// 默认构造,按容量初始化空SortedVector
SortedVector(RANK capacity=DEFAULT_CAP);
// 拷贝构造--复制SortedVector
SortedVector(const SortedVector<T> & sv, RANK lo=0, RANK hi=-1);
// 构造--根据Vector
SortedVector(const Vector<T>& sv, RANK lo=0, RANK hi=-1);
// 构造--根据初始化列表
SortedVector(const initializer_list<T>&);
// 新增元素
RANK add(const T& e);
// 合并另一有序数组
void extend(const SortedVector<T> &);
// 合并Vector
void extend(const Vector<T> &);
// 合并两个SortedVector生成副本
auto concat(const Vector<T> &); // auto是为了便于派生类使用
// 继承,循秩访问(允许负数索引,索引范围:[-size, size) )
T get(int index);
// 二分查找,失败时返回-1
virtual RANK find(const T& value, RANK lo=0, RANK hi=-1);
// 继承,截取区间
Vector<T> sub(RANK lo, RANK hi);
重载运算符
// 判断两集合相等 ==
set == set1; // bool
// 真含于 <
set < set1; // bool
// 含于 <=
set <= set1; // bool
// 真包含 >
set > set1; // bool
// 包含
set >= set1; // bool
// 是否含有(元素)
set >> elem; // bool,等价操作:set.contain(elem);
// 元素是否属于集合
elem << set; // bool, 同样等价于:set.contain(elem);
// 并集 |
set | set1;
// 取并集并更新于自身 |=
set |= set1;
// 交集 &
set & set1;
// 取交集并更新于自身 &=
set &= set1;
// 差集 -
set - set1;
// 取差集并更新于自身 -=
set -= set1;
// 对称差 ^
set ^ set1;
// 取对称差并更新于自身 ^=
set ^= set1;
// 继承,长度
RANK size();
// 继承,是否为空
bool empty();
template<typename VST> // 继承,VST是函数指针
void map(VST &visit);
// 默认构造,复制字符数组生成
String(const char* A="", RANK lo=0, RANK hi=-1);
// 拷贝构造
String(const String&);
// 查找字符数组
RANK find(const char*);
// 查找String
RANK find(const String&);
// 全替换(返回替换次数)
int replace(const char*, const char*); // 两参数可分别替换为String类型
// 插入
void insert(RANK, const char*);
void insert(RANK, const String&);
// 截取
String sub(RANK, RANK);
// 截去
String cut(RANK, RANK);