实用指南:【C/C++】std::vector成员函数清单

实用指南:【C/C++】std::vector成员函数清单

文章目录std::vector使用指南1 不同版本献出的能力基础:C++98 / C++03 提供的成员函数C++11 新增的成员函数标准库泛化,非 vector 成员变化)就是C++14:基本无变化(主要C++17 引入的新特性(间接影响)C++20 新增的成员函数C++23(支持现代特性)总结:不同版本对 `vector` 的增强2 清单构造与析构函数容量相关函数元素访问修改操作迭代器接口分配器支持特别说明:`std::vector` 特化附加:非成员相关函数(在 `` 和 `` 中)

std::vector使用指南1 不同版本提供的能力基础:C++98 / C++03 提供的成员函数这些是最初的 std::vector 提供的核心接口:

函数分类成员函数构造 & 析构vector() / vector(size_t) / vector(size_t, const T&) / vector(begin, end)容量操作size() / capacity() / max_size() / resize() / empty() / reserve()元素访问operator[] / at() / front() / back()数据访问data()(非 const 仅 C++03)修改元素push_back() / pop_back() / insert() / erase() / clear() / assign() / swap()迭代器begin() / end() / rbegin() / rend()C++11 新增的成员函数C++11 引入了移动语义、智能构造、initializer_list 等现代特性。

类别新增成员函数构造函数vector(std::initializer_list)修改操作emplace_back() / emplace()迭代器cbegin() / cend() / crbegin() / crend()数据访问data() 变成同时支持 const 和 non-const移动语义移动构造函数和移动赋值运算符内存管理使用 allocator_traits 更灵活地控制内存行为(底层)标准库泛化,非 vector 成员变化)就是C++14:基本无变化(主要std::vector 本身成员函数无明显增加更侧重算法泛化(如 std::make_reverse_iterator)C++17 引入的新特性(间接影响)虽然 vector 成员函数未变,但你可以使用:

data() 安全性增强(支持空容器时返回有效指针)std::size(v), std::empty(v)(非成员函数支持)C++20 新增的成员函数类别成员函数修改操作resize_and_overwrite(size, lambda) ✅内存操作shrink_to_fit() 行为稳定常量支持consteval / constexpr 支持几乎所有成员函数迭代器contains() 未加入 vector,是 set/map 的(常见误解)resize_and_overwrite 是性能优化函数,用于原地构造内容。

C++23(支持现代特性)类别成员函数范围操作contains()(set, map 特有)iterator 扩展begin() / end() 全部支持 constexprstd::vector提升 bit-reference 安全性(编译器支持有差异)operator[]更明确地支持 constexpr(提高编译期能力)总结:不同版本对 vector 的增强C++版本变化重点C++98/03初始接口、复制语义C++11移动语义、emplace、initializer_listC++14基本无变化C++17增强泛型接口、算法C++20resize_and_overwrite、全面 constexpr 化C++23更现代、安全的范围与编译期支持2 清单std::vector 成员函数完整清单(含函数签名、功能说明、适用的 C++ 标准版本)

构造函数容量管理元素访问修改操作迭代器分配器支持构造与析构函数函数签名说明C++版本vector()默认构造,空向量C++98explicit vector(size_type n)构造 n 个默认值元素C++98vector(size_type n, const T& value)构造 n 个指定值C++98template vector(InputIt first, InputIt last)构造区间元素C++98vector(const vector& other)拷贝构造C++98vector(vector&& other)移动构造C++11vector(std::initializer_list ilist)初始化列表构造C++11~vector()析构函数C++98vector& operator=(const vector& other)拷贝赋值C++98vector& operator=(vector&& other)移动赋值C++11vector& operator=(std::initializer_list ilist)初始化列表赋值C++11容量相关函数函数签名说明C++版本size_type size() const noexcept当前元素个数C++98size_type capacity() const noexcept当前分配容量C++98size_type max_size() const noexcept最大可存储元素数C++98bool empty() const noexcept是否为空C++98void resize(size_type n)改变元素个数(默认值)C++98void resize(size_type n, const T& value)改变元素个数(指定值)C++98void reserve(size_type new_cap)扩充容量C++98void shrink_to_fit()释放冗余容量C++11(行为标准化于 C++20)元素访问函数签名说明C++版本T& operator[](size_type pos)非边界检查访问C++98const T& operator[](size_type pos) const同上C++98T& at(size_type pos)带边界检查访问C++98const T& at(size_type pos) const同上C++98T& front()返回首元素C++98const T& front() const同上C++98T& back()返回尾元素C++98const T& back() const同上C++98T* data() noexcept原始指针访问C++11const T* data() const noexcept同上C++11(C++03为非标准扩展)修改操作函数签名说明C++版本void assign(size_type n, const T& val)用 n 个元素赋值C++98template void assign(InputIt first, InputIt last)区间赋值C++98void assign(std::initializer_list ilist)初始化列表赋值C++11void push_back(const T& value)末尾添加元素C++98void push_back(T&& value)移动添加C++11template void emplace_back(Args&&... args)原地构造末尾元素C++11void pop_back()删除末尾元素C++98iterator insert(iterator pos, const T& value)插入元素C++98iterator insert(iterator pos, T&& value)移动插入C++11iterator insert(iterator pos, size_type count, const T& value)插入 count 个值C++98template iterator insert(iterator pos, InputIt first, InputIt last)插入区间C++98iterator insert(iterator pos, std::initializer_list ilist)插入初始化列表C++11template iterator emplace(iterator pos, Args&&... args)原地插入C++11iterator erase(iterator pos)删除一个元素C++98iterator erase(iterator first, iterator last)删除区间C++98void clear() noexcept清空C++98void swap(vector& other)交换内容C++98template void resize_and_overwrite(size_type n, Operation op)自定义重构内容C++20迭代器接口函数签名说明C++版本iterator begin() / end()正向迭代器C++98const_iterator begin() const / end() constconst 版本C++98reverse_iterator rbegin() / rend()反向迭代器C++98const_reverse_iterator rbegin() const / rend() constconst 版本C++98const_iterator cbegin() / cend()C++11const_reverse_iterator crbegin() / crend()C++11分配器支持函数签名说明C++版本allocator_type get_allocator() const noexcept返回使用的 allocatorC++98特别说明:std::vector 特化std::vector 是位优化特化版本,部分接口行为不同(如返回 proxy 而非 bool&),C++20 和 C++23 对其进行了更安全的增强。

附加:非成员相关函数(在 中)函数签名说明C++版本std::swap(vector&, vector&)交换内容C++98std::begin(v) / std::end(v)泛型访问迭代器C++11std::size(v) / std::empty(v)泛型访问C++17

相关文章

双溪湖风景旅游区
365bet在线注册

双溪湖风景旅游区

📅 11-16 👁️ 1401
应该这么用 穿越火线手游楼兰杖刀使用技巧介绍
365bet在线注册

应该这么用 穿越火线手游楼兰杖刀使用技巧介绍

📅 08-15 👁️ 5128