注:代码中使用部分表示方式为伪代码,应根据实际调整
容器运算
std::copy
将一个容器的某段复制到另一个容器后面
// Copy a container to the end of another container.
std::copy(a.begin(), a.end(), std::back_inserter(b)); // range
std::copy_n(a.begin(), n, b.begin());
std::fill
把一个容器中的指定区域填充为某个值
std::fill(a.iter_begin(), a.end_iter(), val); // fill range
std::fill_n(a.iter_begin(), n, val)
std::generate
在指定区间根据函数生成值
int i = 0;
std::generate(a.begin(), a.end(), [](){return i++});
std::generate_n(a.begin(), n, [](){return i++});
std::merge
把两个容器的数据连接,放置到第三个容器中
std::merge(a.begin(), a.end(), b.begin(), b.end(), c.begin())
std::move
把指定区间的数据移动到另一区间
std::move(a.begin(), a.end(), b.begin());
std::reverse
调换区间顺序
std::reverse(a.begin(), a.end())
std::transform
Unary operation: 对一个容器元素做运算,将结果存储到指定容器中(可以是该容器,也可以是另一个容器)
std::transform(a.begin(), a.end(), b.begin(), f(&a))
对两个容器元素做运算,将结果存到指定容器中(可以是两个中的一个,也可以是第三个)
std::transform(a.begin(), a.end(), b.begin(), c.begin(), f(&a, &b))
std::transform(a.begin(), a.end(), b.begin(), a.begin(), f(&a, &b));
std::transform(a.begin(), a.end(), b.begin(), b.begin(), f(&a, &b));
std::replace
用一个新值替换一段区域中的旧值
std::replace(a.begin(), a.end(), old_value, new_value)
std::remove
把序列中的某一个元素去除
std::remove(a.begin(), a.end(), value)
std::swap
把两个容器的内容交换,也可用一个空白容器清空另一个容器
std::swap(a, b)
std::swap(a, {})
std::iter_swap(a.iter(), b.iter()); // 交换指定元素
索引与查询
std::distance
计算两个迭代器之间的距离
std::distance(a.iter1(), a.iter2())
std::lower_bound/std::upper_bound
返回第一个大于等于/大于给定值的迭代器
auto iter = std::lower_bound(data.begin(), data.end(), val)
auto iter = std::upper_bound(data.begin(), data.end(), val)