C++98标准库的魔法书:实用函数与类的终极指南


<iostream> <string> <vector>
<list> <deque> <set>
<map> <algorithm> <cmath>
<fstream> <bitset> <exception>
<stdexcept> <locale> <numeric>
<functional> <iterator> <utility>
<ctime> <iomanip> <limits>
<random> <bit>

<iostream>

Or函数 原型 含义
cin istream& cin(istream& is); 从标准输入读取数据
cout ostream& cout(ostream& os); 向标准输出写入数据
cerr ostream& cerr(ostream& os); 向标准错误输出写入数据
istream 用于从输入流读取数据
ostream 用于向输出流写入数据
fstream 用于读写文件流
strstream 用于处理字符串流
stringstream 用于处理字符串流,提供了方便的字符串操作
wistream 用于从宽字符输入流读取数据
wostream 用于向宽字符输出流写入数据
wfstream 用于读写宽字符文件流
wstringstream 用于处理宽字符字符串流,提供了方便的宽字符字符串操作


<string>

Or函数 原型 含义
size() size_type size() const; 获取字符串长度
substr() string substr(size_type pos = 0, size_type len = npos) const; 获取字符串子串
find() size_type find(const string& str, size_type pos = 0) const;
size_type find(const char* s, size_type pos = 0) const;
size_type find(char c, size_type pos = 0) const;
查找子串或字符的位置
append() string& append(const string& str);
string& append(const char* s);
string& append(size_type n, char c);
向字符串追加内容
replace() string& replace(size_type pos, size_type len, const string& str);
string& replace(size_type pos, size_type len, const char* s);
string& replace(size_type pos, size_type len, size_type n, char c);
替换字符串中的子串或字符
erase() string& erase(size_type pos = 0, size_type len = npos); 删除字符串中的子串或字符
insert() string& insert(size_type pos, const string& str);
string& insert(size_type pos, const char* s);
string& insert(size_type pos, size_type n, char c);
在指定位置插入子串或字符
operator+ string operator+(const string& str);
string operator+(const char* s);
连接两个字符串
operator+= string& operator+=(const string& str);
string& operator+=(const char* s);
将字符串追加到当前字符串



<vector>

C++98标准库中,vector是一个动态数组类模板,用于存储同类型的元素集合。以下是vector库中一些常用函数和类的原型声明:

Or函数 原型 含义
push_back() void push_back(const value_type& val);
void push_back(value_type&& val);
向容器末尾添加元素
pop_back() void pop_back(); 删除容器末尾的元素
insert() iterator insert(iterator pos, const value_type& val);
iterator insert(iterator pos, value_type&& val);
在指定位置插入元素
erase() iterator erase(iterator pos);
iterator erase(iterator first, iterator last);
删除指定位置的元素
resize() void resize(size_type n);
void resize(size_type n, const value_type& val);
调整容器大小
clear() void clear(); 清空容器
swap() void swap (vector& other); 与另一个vector交换内容
resize() void resize (size_type n, const T& val = T()); 调整vector的大小为n个元素,并用指定值填充新元素
// 构造函数  
vector<T> () : vector() {
    
     }  // 默认构造函数  
vector<T> (size_type n) : vector(n) {
    
     }  // 大小为n的构造函数  
vector<T> (size_type n, const T& val) : vector(n, val) {
    
     }  // 大小为n,值为val的构造函数  
template <class InputIterator> vector (InputIterator first, InputIterator last) : vector (first, last - first) {
    
     } // 从迭代器范围构造的构造函数  
  
// 成员函数  
void push_back (const T& val);  // 向vector末尾添加一个元素  
void pop_back ();  // 删除vector末尾的元素  
void clear () ;  // 清空vector  
void resize (size_type n, const T& val = T());  // 调整vector的大小为n个元素,并用指定值填充新元素  
void insert (iterator pos, const T& val);  // 在指定位置插入一个元素  
void erase (iterator pos);  // 删除指定位置的元素  
void erase (iterator first, iterator last);  // 删除指定范围内的元素  
void swap (vector& other);  // 与另一个vector交换内容  
T& operator[] (size_type pos);  // 通过索引访问元素,读写操作都可以用  
T& at (size_type pos);  // 通过索引访问元素,但增加了越界检查,读写操作都可以用  
T* data ();  // 返回指向vector内部数据的指针
size_type:表示元素数量的类型。
difference_type:表示迭代器之间的差值的类型。
value_type:表示存储在vector中的元素类型。
iterator:指向vector中元素的迭代器类型。
const_iterator:指向const vector中元素的常量迭代器类型。
reverse_iterator:指向vector中元素的反向迭代器类型。
const_reverse_iterator:指向const vector中元素的常量反向迭代器类型。
allocator_type:表示分配器的类型。
pointer:指向元素的指针类型。
reference:指向元素的引用类型。
bool:表示是否为空的布尔类型。
size():返回vector中元素的数量。
capacity():返回vector的容量(即可以容纳的元素数量)。
empty():检查vector是否为空。
front():返回指向vector第一个元素的指针。
back():返回指向vector最后一个元素的指针。
data():返回指向vector内部数据的指针。



<list>

C++98标准库中,list是一个双向链表类模板,用于存储同类型的元素集合。以下是list库中一些常用函数和类的原型声明:

Or函数 原型 含义
push_back() void push_back(const T& val); 向list末尾添加一个元素
pop_back() void pop_back(); 删除list末尾的元素
clear() void clear () ; 清空list
resize() void resize (size_type n, const T& val = T()); 调整list的大小为n个元素,并用指定值填充新元素
insert() void insert (iterator pos, const T& val); 在指定位置插入一个元素
erase() void erase (iterator pos); 删除指定位置的元素
erase() void erase (iterator first, iterator last); 删除指定范围内的元素
swap() void swap(list& other); 与另一个list交换内容
T& operator[] (size_type pos); 通过索引访问元素,读写操作都可以用
// 构造函数  
list<T> () : list() {
    
     }  // 默认构造函数  
list<T> (size_type n) : list(n) {
    
     }  // 大小为n的构造函数  
list<T> (size_type n, const T& val) : list(n, val) {
    
     }  // 大小为n,值为val的构造函数
template <class InputIterator> list (InputIterator first, InputIterator last) : list (first, last - first) {
    
     } // 从迭代器范围构造的构造函数  
  
// 成员函数  
void push_back (const T& val);  // 向list末尾添加一个元素  
void pop_back ();  // 删除list末尾的元素  
void clear () ;  // 清空list  
void resize (size_type n, const T& val = T());  // 调整list的大小为n个元素,并用指定值填充新元素  
void insert (iterator pos, const T& val);  // 在指定位置插入一个元素  
void erase (iterator pos);  // 删除指定位置的元素  
void erase (iterator first, iterator last);  // 删除指定范围内的元素  
void swap (list& other);  // 与另一个list交换内容  

T& front();  // 返回指向list第一个元素的引用  
T& back();  // 返回指向list最后一个元素的引用  
const T& front() const;  // 返回指向list第一个元素的常量引用(const版本)  
const T& back() const;  // 返回指向list最后一个元素的常量引用(const版本)
T& at (size_type pos);  // 通过索引访问元素,读写操作都可以用  
T& operator[] (size_type pos);  // 通过索引访问元素,读写操作都可以用
// 迭代器函数  
iterator begin();  // 返回指向list第一个元素的迭代器  
iterator end();  // 返回指向list末尾的迭代器  
const_iterator begin() const;  // 返回指向list第一个元素的常量迭代器(const版本)  
const_iterator end() const;  // 返回指向list末尾的常量迭代器(const版本)  
reverse_iterator rbegin();  // 返回指向list最后一个元素的反向迭代器  
reverse_iterator rend();  // 返回指向list末尾的反向迭代器  
const_reverse_iterator rbegin() const;  // 返回指向list最后一个元素的常量反向迭代器(const版本)  
const_reverse_iterator rend() const;  // 返回指向list末尾的常量反向迭代器(const版本)
size_type:表示元素数量的类型。
difference_type:表示迭代器之间的差值的类型。
value_type:表示存储在list中的元素类型。
iterator:指向list中元素的迭代器类型。
const_iterator:指向const list中元素的常量迭代器类型。
reverse_iterator:指向list中元素的反向迭代器类型。
const_reverse_iterator:指向const list中元素的常量反向迭代器类型。
allocator_type:表示分配器的类型。
pointer:指向元素的指针类型。
reference:指向元素的引用类型。
bool:表示是否为空的布尔类型。
size():返回list中元素的数量。
capacity():返回list的容量(即可以容纳的元素数量)。
empty():检查list是否为空。



<deque>

Or函数 原型 含义
push_front() void push_front(const T& val); 在deque前端添加一个元素
push_back() void push_back (const T& val); 在deque后端添加一个元素
pop_front() void pop_front (); 删除deque前端的最前元素
pop_back() void pop_back (); 删除deque后端的最后元素
clear() void clear () ; 清空deque
resize() void resize (size_type n, const T& val = T()); 调整deque的大小为n个元素,并用指定值填充新元素
insert() void insert (iterator pos, const T& val); 在指定位置插入一个元素
erase() void erase (iterator pos); 删除指定位置的元素
erase() void erase (iterator first, iterator last); 删除指定范围内的元素
swap() void swap (deque& other); 与另一个deque交换内容
// 构造函数  
deque<T> () : deque() {
    
     }  // 默认构造函数  
deque<T> (size_type n) : deque(n) {
    
     }  // 大小为n的构造函数  
deque<T> (size_type n, const T& val) : deque(n, val) {
    
     }  // 大小为n,值为val的构造函数  
template <class InputIterator> deque (InputIterator first, InputIterator last) : deque (first, last - first) {
    
     } // 从迭代器范围构造的构造函数  
  
// 成员函数  
void push_front (const T& val);  // 在deque前端添加一个元素  
void push_back (const T& val);  // 在deque后端添加一个元素  
void pop_front ();  // 删除deque前端的最前元素  
void pop_back ();  // 删除deque后端的最后元素  
void clear () ;  // 清空deque  
void resize (size_type n, const T& val = T());  // 调整deque的大小为n个元素,并用指定值填充新元素  
void insert (iterator pos, const T& val);  // 在指定位置插入一个元素  
void erase (iterator pos);  // 删除指定位置的元素  
void erase (iterator first, iterator last);  // 删除指定范围内的元素  
void swap (deque& other);  // 与另一个deque交换内容  
T& at (size_type pos);  // 通过索引访问元素,读写操作都可以用  
T& operator[] (size_type pos);  // 通过索引访问元素,读写操作都可以用
类成员变量
size_type:表示元素数量的类型。
difference_type:表示迭代器之间的差值的类型。
value_type:表示存储在deque中的元素类型。
iterator:指向deque中元素的迭代器类型。
const_iterator:指向const deque中元素的常量迭代器类型。
reverse_iterator:指向deque中元素的反向迭代器类型。
const_reverse_iterator:指向const deque中元素的常量反向迭代器类型。
allocator_type:表示分配器的类型。
pointer:指向元素的指针类型。
reference:指向元素的引用类型。
bool:表示是否为空的布尔类型。
size():返回deque中元素的数量。
capacity():返回deque的容量(即可以容纳的元素数量)。
empty():检查deque是否为空。



<set>

C++98标准库中,set是一个集合类模板,用于存储唯一元素的集合。以下是set库中一些常用函数和类的原型声明:

Or函数 原型 含义
1
2
3
4
5
6
7
8
9
// 构造函数  
set<T> () : set() {
    
     }  // 默认构造函数  
set<T> (const set<T>& other) : set(other) {
    
     }  // 复制构造函数  
set<T> (const vector<T>& vec) : set(vec.begin(), vec.end()) {
    
     }  // 从vector构造的构造函数  
  
// 成员函数  
void insert (const T& val);  // 在set中插入一个元素  
void remove (const T& val);  // 从set中删除一个元素  
void clear () ;  // 清空set  
bool contains (const T& val) const;  // 检查set中是否包含指定元素  
size_type count (const T& val) const;  // 返回set中指定元素的个数  
bool empty () const;  // 检查set是否为空  
size_type size () const;  // 返回set中元素的数量
类成员变量
size_type:表示元素数量的类型。
difference_type:表示迭代器之间的差值的类型。
value_type:表示存储在set中的元素类型。
iterator:指向set中元素的迭代器类型。
const_iterator:指向const set中元素的常量迭代器类型。
reverse_iterator:指向set中元素的反向迭代器类型。
const_reverse_iterator:指向const set中元素的常量反向迭代器类型。
allocator_type:表示分配器的类型。
pointer:指向元素的指针类型。
reference:指向元素的引用类型。
bool:表示是否为空的布尔类型。
size():返回set中元素的数量。
empty():检查set是否为空。

注意:在C++98标准库中,set类的成员函数相对较少,主要是插入、删除和检查元素的操作。另外,C++98标准库中的set类不允许使用下标运算符([])来访问元素,只能使用迭代器来访问。



<map>

C++98标准库中,map是一个关联容器,它存储了键值对(key-value pairs),其中每个键都唯一对应一个值。以下是map库中一些常用函数和类的原型声明:

Or函数 原型 含义
1
2
3
4
5
6
7
8
9
#include <map>
// 类型声明
template <class Key, class T, class Compare = std::less<Key>,
          class Allocator = std::allocator<std::pair<const Key, T> > >
class map;

// 类模板特化
template <class Key, class T, class Compare, class Allocator>
bool operator==(const map<Key, T, Compare, Allocator>& x,
                const map<Key, T, Compare, Allocator>& y);
template <class Key, class T, class Compare, class Allocator>
bool operator<(const map<Key, T, Compare, Allocator>& x,
               const map<Key, T, Compare, Allocator>& y);
template <class Key, class T, class Compare, class Allocator>
bool operator!=(const map<Key, T, Compare, Allocator>& x,
                const map<Key, T, Compare, Allocator>& y);
template <class Key, class T, class Compare, class Allocator>
bool operator>(const map<Key, T, Compare, Allocator>& x,
               const map<Key, T, Compare, Allocator>& y);
template <class Key, class T, class Compare, class Allocator>
bool operator>=(const map<Key, T, Compare, Allocator>& x,
                const map<Key, T, Compare, Allocator>& y);
template <class Key, class T, class Compare, class Allocator>
bool operator<=(const map<Key, T, Compare, Allocator>& x,
                const map<Key, T, Compare, Allocator>& y);

// 函数
template <class Key, class T, class Compare, class Allocator>
void swap(map<Key, T, Compare, Allocator>& x,
          map<Key, T, Compare, Allocator>& y);

// 类成员函数
template <class Key, class T, class Compare, class Allocator>
class map {
    
    
public:
    // 类型定义
    typedef Key                                     key_type;
    typedef T                                       mapped_type;
    typedef std::pair<const Key, T>                  value_type;
    typedef Compare                                 key_compare;
    typedef Allocator                               allocator_type;
    typedef typename Allocator::reference           reference;
    typedef typename Allocator::const_reference     const_reference;
    typedef typename Allocator::pointer             pointer;
    typedef typename Allocator::const_pointer       const_pointer;
    typedef typename Allocator::size_type           size_type;
    typedef typename Allocator::difference_type     difference_type;
    typedef typename Allocator::template rebind<value_type>::other
                                                    pair_allocator_type;
    typedef typename std::allocator_traits<Allocator>::
            template rebind_alloc<value_type>        allocator_type;

    class value_compare;

    // 构造函数
    explicit map(const Compare& comp = Compare(),
                 const Allocator& alloc = Allocator());

    template <class InputIterator>
    map(InputIterator first, InputIterator last,
        const Compare& comp = Compare(),
        const Allocator& alloc = Allocator());

    map(const map& x);

    // 析构函数
    ~map();

    // 赋值运算符
    map& operator=(const map& x);

    // 迭代器
    iterator begin();
    const_iterator begin() const;
    iterator end();
    const_iterator end() const;
    reverse_iterator rbegin();
    const_reverse_iterator rbegin() const;
    reverse_iterator rend();
    const_reverse_iterator rend() const;

    // 容量
    bool empty() const;
    size_type size() const;
    size_type max_size() const;

    // 修改容器
    std::pair<iterator,bool> insert(const value_type& x);
    iterator insert(iterator position, const value_type& x);
    template <class InputIterator>
    void insert(InputIterator first, InputIterator last);
    void erase(iterator position);
    size_type erase(const key_type& x);
    void erase(iterator first, iterator last);
    void swap(map& x);
    void clear();

    // 查找
    iterator find(const key_type& x);
    const_iterator find(const key_type& x) const;
    size_type count(const key_type& x) const;
    iterator lower_bound(const key_type& x);
    const_iterator lower_bound(const key_type& x) const;
    iterator upper_bound(const key_type& x);
    const_iterator upper_bound(const key_type& x) const;
    std::pair<iterator, iterator> equal_range(const key_type& x);
    std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const;

    // 运算符
    T& operator[](const key_type& x);

    // 观察器
    key_compare key_comp() const;
    value_compare value_comp() const;
    allocator_type get_allocator() const;

private:
    // 内部类和函数声明

    // 节点
    struct _Rb_tree_node;
    typedef typename Allocator::template rebind<_Rb_tree_node>::other
                                                    _Node_allocator_type;
    typedef typename _Node_allocator_type::pointer   _Node_ptr;
    typedef typename _Node_allocator_type::const_pointer
                                                    _Const_node_ptr;
    enum _Rb_tree_color {
    
     _S_rb_tree_red = false, _S_rb_tree_black = true };

    // 红黑树节点
    struct _Rb_tree_node {
    
    
        typedef _Rb_tree_color  _Color_type;
        typedef _Rb_tree_node*  _Base_ptr;
        typedef _Rb_tree_node*  _Link_type;

        _Color_type           _M_color;
        _Link_type            _M_parent;
        _Link_type            _M_left;   // 左子节点或父节点
        _Link_type            _M_right;  // 右子节点或父节点
        value_type            _M_value_field;
    };

    typedef simple_allocator<_Rb_tree_node, _Node_allocator_type>
                                                    _M_node_allocator_type;
    typedef _Rb_tree_node*  _Base_ptr;
    typedef const _Rb_tree_node*  _Const_Base_ptr;

    // 红黑树
    class _Rb_tree;

    // 迭代器
    class iterator;
    class const_iterator;
    class reverse_iterator;
    class const_reverse_iterator;
};

这些是C++98标准中 ​std::map​库的所有函数和类的原型声明。其中包括了类的类型定义、构造函数、析构函数、赋值运算符、迭代器、容量、修改容器、查找、运算符和观察器等函数。同时还有类模板特化、全局函数比较运算符和 ​swap​函数等。

在C++98标准中,std::multimap是存在于<map>库中的。<map>库提供了关联式容器,允许存储键值对,并能够通过键进行快速查找。
std::multimap是一个多重映射容器,它允许存储多个具有相同键的键值对。以下是一些常用的成员函数和成员变量:

class multimap {
    
    
public:
    // 构造函数
    multimap();
    explicit multimap(const Compare& comp = Compare(),
                      const Allocator& = Allocator());
    template <class InputIterator>
    multimap(InputIterator first, InputIterator last);
    template <class InputIterator>
    multimap(InputIterator first, InputIterator last,
             const Compare& comp,
             const Allocator& = Allocator());

    // 复制构造函数
    multimap(const multimap& x);

    // 析构函数
    ~multimap();

    // 赋值运算符
    multimap& operator=(const multimap& x);

    // 迭代器
    iterator begin();
    const_iterator begin() const;
    iterator end();
    const_iterator end() const;
    reverse_iterator rbegin();
    const_reverse_iterator rbegin() const;
    reverse_iterator rend();
    const_reverse_iterator rend() const;

    // 容量
    bool empty() const;
    size_type size() const;
    size_type max_size() const;

    // 修改容器
    void insert(const value_type& x);
    iterator insert(iterator position, const value_type& x);
    template <class InputIterator>
    void insert(InputIterator first, InputIterator last);
    void erase(iterator position);
    size_type erase(const key_type& x);
    void erase(iterator first, iterator last);
    void swap(multimap& x);
    void clear();

    // 查找
    iterator find(const key_type& x);
    const_iterator find(const key_type& x) const;
    size_type count(const key_type& x) const;
    iterator lower_bound(const key_type& x);
    const_iterator lower_bound(const key_type& x) const;
    iterator upper_bound(const key_type& x);
    const_iterator upper_bound(const key_type& x) const;
    std::pair<iterator, iterator> equal_range(const key_type& x);
    std::pair<const_iterator, const_iterator> equal_range(const key_type& x) const;

    // 运算符
    compare_key key_comp() const;
    value_compare value_comp() const;

    // 其他
    allocator_type  get_allocator() const;
};

这些是C++98标准中 ​std::multimap​类的所有成员函数声明。其中包括了容器的构造函数、复制构造函数、析构函数、赋值运算符、迭代器、容量、修改容器、查找、运算符和其他函数。



<algorithm>

C++98标准库中,algorithm库提供了许多常用的算法函数,用于对数据进行各种操作。由于algorithm库中的函数数量庞大,这里只列举其中一些常用的函数原型声明,以及一些关键的类和成员函数的原型。

Or函数 原型 含义
find() template <class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& value);
用于在容器中查找特定元素,返回指向找到的元素的迭代器
sort() template <class RandomIt>
void sort (RandomIt first, RandomIt last);
对容器中的元素进行排序
reverse() template <class BidirectionalIt>
void reverse (BidirectionalIt first, BidirectionalIt last);
反转容器中的元素
replace() template <class OutputIt, class InputIt1, class InputIt2>
OutputIt replace (OutputIt d_first, OutputIt d_last, const InputIt1& s_first, const InputIt2& s_last);
替换容器中特定元素为另一值
find_if() template <class InputIt, class UnaryPredicate>
InputIt find_if (InputIt first, InputIt last, UnaryPredicate p);
在容器中查找满足特定条件的第一个元素
copy() template <class InputIt, class OutputIt>
OutputIt copy (InputIt first, InputIt last, OutputIt d_first);
将一个容器中的元素复制到另一个容器中
transfrom() template <class InputIt1, class InputIt2, class OutputIt>
OutputIt transform (InputIt1 first1, InputIt1 last1, InputIt2 first2, OutputIt d_first);
对容器中的元素进行转换操作
binary_search() template <class BidirectionalIt, class T>
bool binary_search (BidirectionalIt first, BidirectionalIt last, const T& value);
在已排序的容器中执行二分查找
next_permutation() template <class BidirectionalIt>
bool next_permutation (BidirectionalIt first, BidirectionalIt last);
生成容器的下一个排列
prev_permutation() template bool prev_permutation (BidirectionalIt first, BidirectionalIt last); 生成容器的上一个排列
make_heap() template <class RandomIt>
void make_heap (RandomIt first, RandomIt last);
将容器转换为堆
sort_heap() template <class RandomIt>
void sort_heap (RandomIt first, RandomIt last);
对堆进行排序
pop_heap() template <class RandomIt>
void pop_heap (RandomIt first, RandomIt last);
弹出堆顶元素
remove() template <class InputIt, class T>
InputIt remove (InputIt first, InputIt last, const T& value);
从容器中删除指定元素
remove_if() template <class InputIt, class UnaryPredicate>
InputIt remove_if (InputIt first, InputIt last, UnaryPredicate p);
从容器中删除满足特定条件的元素

这只是algorithm库中的一部分函数,还有许多其他函数可用于执行各种算法操作,如合并、排序、查找等。请注意,C++98标准库中的函数与C++11标准库中的函数之间存在一些差异,例如std::sortstd::find等函数在C++11中得到了改进和优化。
注意:C++98标准库中,并没有单独为algorithm库定义类或内部成员函数。上述函数主要依赖于模板编程技术,这些函数可以应用于各种不同的容器类型(如vector、list等)以及自定义的数据结构。函数的参数通常是迭代器,它们提供了对容器内部元素的间接访问。因此,没有特定的“引用类”或“内部成员函数”与algorithm库相关联。



<cmath>

C++98标准库中,头文件提供了许多数学函数,用于执行各种数学运算。以下是一些常用函数的原型声明:

Or函数 原型 含义
abs() template <class T>
T abs (T arg);
返回参数的绝对值
exp() template <class T>
T exp (T arg);
计算参数的指数值
log() template <class T> T log (T arg); 计算参数的自然对数值
sin() template <class T>
T sin (T arg);
计算参数的正弦值
cos() template <class T>
T cos (T arg);
计算参数的余弦值
tan() template <class T>
T tan (T arg);
计算参数的正切值
ceil() template <class T>
T ceil (T arg);
返回不小于参数的最小整数
floor() template <class T>
T floor (T arg);
返回不大于参数的最大整数
sqrt() template <class T>
T sqrt (T arg);
计算参数的平方根
pow() template <class T>
T pow (T base, T exponent);
计算参数的幂
log10() template <class T>
T log10 (T arg);
计算参数的以10为底的对数
modf() template <class T>
pair<T, T> modf (T arg, T* iptr);
将参数分解为整数和浮点数部分
fmod() template <class T>
T fmod (T x, T y);
计算参数的余数
remainder() template <class T>
T remainder (T x, T y);
计算参数的余数
hypot() template <class T>
T hypot (T x, T y);
计算参数的斜边的平方根
acos() template <class T>
T acos (T arg);
计算参数的反余弦值
asin() template <class T>
T asin (T arg);
计算参数的反正弦值
atan() template <class T>
T atan (T arg);
计算参数的反正切值
atan2() template <class T>
atan2 (T y, T x);
计算参数的四个象限反正切值
trunc() template <class T>
T trunc (T arg);
将参数截断为整数部分



<fstream>

C++98标准库中,库提供了文件输入输出流的功能。以下是一些常用函数的原型声明和类:

Or函数 原型 含义
ifstream 输入文件流
ofstream 输出文件流
fstream 输入/输出文件流
fopen() FILE* fopen (const char* filename, const char* mode); 打开一个文件
fclose() int fclose (FILE* stream); 关闭一个文件
fread() size_t fread (void* ptr, size_t size, size_t count, FILE* stream); 从文件中读取数据
fwrite() size_t fwrite (const void* ptr, size_t size, size_t count, FILE* stream); 向文件中写入数据
fflush() int fflush (FILE* stream); 刷新一个文件
fseek() int fseek (FILE* stream, long offset, int whence); 设置文件的读取/写入位置
ftell() long ftell (FILE* stream); 获取当前文件的读取/写入位置
rewind() void rewind (FILE* stream); 重置文件的读取/写入位置到文件的开头
fgetc() int fgetc (FILE* stream); 从文件中读取一个字符
fgets() char* fgets (char* str, int num, FILE* stream); 从文件中读取一行数据
fputc() int fputc (int c, FILE* stream); 向文件中写入一个字符
fputs() int fputs (int c, FILE* stream); 向文件中写入一行数据
feof() int feof (FILE* stream); 检查是否到达文件的末尾
ferror() int ferror (FILE* stream); 检查文件是否发生错误
clearerr() void clearerr (FILE* stream); 清除文件的状态标志
std::ifstream::open() void open (const char* filename, ios_base::openmode mode = ios_base::in); 打开一个输入文件
std::ofstream::open() void open (const char* filename, ios_base::openmode mode = ios_base::out); 打开一个输出文件
std::fstream::open() void open (const char* filename, ios_base::openmode mode = ios_base::in | ios_base::out); 打开一个输入/输出文件
9
std::ifstream::read() template <class T>
streamsize read (T* s, streamsize n);
从输入文件读取数据
std::ofstream::write() template <class T>
streamsize write (const T* s, streamsize n);
向输出文件写入数据
std::ifstream::close() void std::ifstream::close(); 关闭输入文件流
std::ofstream::close() void std::ofstream::close(); 关闭输出文件流
std::fstream::close() void std::fstream::close(); 关闭输入/输出文件流
std::fstream::seekg: 设置输入文件流的读取位置。
std::fstream::seekp: 设置输出文件流的写入位置。
std::ifstream::eof: 检查是否到达输入文件的末尾。
std::ofstream::eof: 检查是否到达输出文件的末尾。
std::fstream::eof: 检查是否到达输入/输出文件的末尾。
std::ifstream::fail: 检查输入操作是否失败。
std::ofstream::fail: 检查输出操作是否失败。
std::fstream::fail: 检查输入/输出操作是否失败。
std::ifstream::clear: 清除输入错误的标志位。
std::ofstream::clear: 清除输出错误的标志位。
std::fstream::clear: 清除输入/输出错误的标志位。
std::ifstream::width: 设置或获取字段宽度。
std::ofstream::width: 设置或获取字段宽度。
std::fstream::width: 设置或获取字段宽度。
std::ifstream::setprecision: 设置或获取精度值。
std::ofstream::setprecision: 设置或获取精度值。
std::fstream::setprecision: 设置或获取精度值。



<bitset>

C++98标准库中,bitset是标准库中的一部分,包含在头文件中。bitset是一个特殊的容器类,用于处理固定大小的位序列。以下是bitset类的部分成员函数和成员变量:

Or函数 原型 含义
bitset() ​​explicit bitset(size_t num_bits = 0);
bitset() bitset(); 默认构造函数
bitset() bitset(size_t n, unsigned long val = 0); 创建一个n位的bitset,并将所有位初始化为val的构造函数
bitset(const bitset& other); 拷贝构造函数
~bitset(); 析构函数
size() size_t size() const; 返回bitset的大小
num_bits() size_t num_bits() const; 返回bitset中位的数量
any() bool any() const; 如果bitset中至少有一个位为1,则返回true
none() bool none() const; 如果bitset中所有位都为0,则返回true
count() size_t count() const; 返回bitset中为1的位的数量
max() size_t max() const; 返回bitset中可以设置的最大位值
reset() void reset(); 将bitset的所有位重置为0
filp() void flip(); 翻转bitset的所有位
size_t& operator[](size_t i); 访问或修改bitset中的特定位,下标从0开始。例如,bitset[i] = val 或者 val = bitset[i]
test() bool test(size_t i) const; 检查bitset中的特定位是否为1,下标从0开始。例如,if (bitset[i]) ... 或者 if (!bitset[i]) ...
void set(size_t i); 设置bitset中的特定位为1,下标从0开始。例如,bitset[i] = true 或者 bitset[i] = val
reset() void reset(size_t i); 设置bitset中的特定位为0,下标从0开始。例如,bitset[i] = false 或者 bitset[i] = val (val为0)
filp() void flip(size_t i); 翻转bitset中的特定位,下标从0开始。例如,bitset[i] = ~bitset[i] 或者 bitset[i] = val (val为1或0)
bitset<N>& set(); 返回一个对当前bitset对象的引用
bitset<N>& set(size_t pos, bool value = true); 设置bitset中索引为pos的位为给定的bool值(默认为true)
bitset<N>& reset(); 将bitset中的所有位重置为0
bitset<N>& reset(size_t pos); 将bitset中索引为pos的位重置为0
bitset<N>& flip(); 翻转bitset中的所有位
bitset<N>& flip(size_t pos); 翻转bitset中索引为pos的位
unsigned long to_ulong() const; 将bitset的内容转换为一个无符号长整型值。如果bitset的大小超过无符号长整型的位数,则结果可能不正确
std::string to_string() const; 将bitset的内容转换为一个字符串表示形式
bitset<N>& operator=(const bitset& other); 将一个bitset对象赋值给另一个bitset对象
bool operator[](size_t pos) const; 用于访问bitset中索引为pos的位。如果该位为1,则返回true;否则返回false
bitset<N>& operator&=(const bitset& other); 按位与操作符的重载,用于对两个bitset对象进行按位与操作
bitset<N>& operator|=(const bitset& other); 按位或操作符的重载,用于对两个bitset对象进行按位或操作
bitset<N>& operator^=(const bitset& other); 按位异或操作符的重载,用于对两个bitset对象进行按位异或操作
bitset<N> operator~() const; 按位求反操作符的重载,用于对一个bitset对象进行按位求反操作
其中,​N​表示 ​bitset​的大小(位数)



吾近染风寒,力不从心,此篇文章暂停更新 [24.01.17 15:58]

<exception>

C++98标准库中,exception库是标准库的一部分,用于处理异常。以下是exception库中一些重要函数和类的原型声明:

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<stdexcept>

C++98标准库中,<stdexcept>头文件提供了标准异常类,这些类位于std命名空间中。以下是库中一些常用异常类的原型声明:

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<locale>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<numeric>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<functional>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<iterator>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<utility>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<ctime>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<iomanip>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<limits>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<random>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9



<bit>

C++98标准库中,

Or函数 原型 含义
1
2
3
4
5
6
7
8
9

猜你喜欢

转载自blog.csdn.net/m0_74311333/article/details/135621330