# C++ STL (Standard Template Library) ###### tags: `C++` 參考: https://jasonblog.github.io/note/c++/c++_stl_xue_xi_zong_7d5028_quan_976229.html https://hackmd.io/jmNCb3H8SVKxdoDYsjU0pA#STL容器 ## Vector ## List ## Deque ## Stack ## Queue ## Array ## Pair ```cpp= #include <ut> ``` ## Map ## Multimap ## Set https://officeguide.cc/c-cpp-stl-std-set-tutorial-examples/ ```cpp= // 宣告整數 set set<int> numSet; // 新增元素 numSet.insert(1); numSet.insert(6); numSet.insert(8); // 檢查 set 是否包含指定元素 set<int>::iterator iter; iter = numSet.find(6); if (iter != numSet.end()) { cout << "Found: " << *iter << endl; } else { cout << "Not found." << endl; } // 以迴圈逐一處理 set 中的每個元素 cout << "All elements:" << endl; for (iter = numSet.begin(); iter != numSet.end(); iter++) { cout << *iter << endl; } ``` <table> <caption> 表 1 C++ set 容器常用成员方法</caption> <tbody> <tr> <th> 成员方法</th> <th> 功能</th> </tr> <tr> <td> begin()</td> <td> 返回指向容器中第一个(注意,是已排好序的第一个)元素的双向迭代器。如果 set 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。</td> </tr> <tr> <td> end()</td> <td> 返回指向容器最后一个元素(注意,是已排好序的最后一个)所在位置后一个位置的双向迭代器,通常和 begin() 结合使用。如果 set 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。</td> </tr> <tr> <td> rbegin()</td> <td> 返回指向最后一个(注意,是已排好序的最后一个)元素的反向双向迭代器。如果 set 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。</td> </tr> <tr> <td> rend()</td> <td> 返回指向第一个(注意,是已排好序的第一个)元素所在位置前一个位置的反向双向迭代器。如果 set 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。</td> </tr> <tr> <td> cbegin()</td> <td> 和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。</td> </tr> <tr> <td> cend()</td> <td> 和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。</td> </tr> <tr> <td> crbegin()</td> <td> 和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。</td> </tr> <tr> <td> crend()</td> <td> 和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。</td> </tr> <tr> <td> find(val)</td> <td> 在 set 容器中查找值为 val 的元素,如果成功找到,则返回指向该元素的双向迭代器;反之,则返回和 end() 方法一样的迭代器。另外,如果 set 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。</td> </tr> <tr> <td> lower_bound(val)</td> <td> 返回一个指向当前 set 容器中第一个大于或等于 val 的元素的双向迭代器。如果 set 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。</td> </tr> <tr> <td> upper_bound(val)</td> <td> 返回一个指向当前 set 容器中第一个大于 val 的元素的迭代器。如果 set 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。</td> </tr> <tr> <td> equal_range(val)</td> <td> 该方法返回一个 pair 对象(包含 2 个双向迭代器),其中 pair.first 和 lower_bound() 方法的返回值等价,pair.second 和 upper_bound() 方法的返回值等价。 也就是说,该方法将返回一个范围,该范围中包含的值为 val 的元素(set 容器中各个元素是唯一的,因此该范围最多包含一个元素)。</td> </tr> <tr> <td> empty()</td> <td> 若容器为空,则返回 true;否则 false。</td> </tr> <tr> <td> size()</td> <td> 返回当前 set 容器中存有元素的个数。</td> </tr> <tr> <td> max_size()</td> <td> 返回 set 容器所能容纳元素的最大个数,不同的操作系统,其返回值亦不相同。</td> </tr> <tr> <td> insert()</td> <td> 向 set 容器中插入元素。</td> </tr> <tr> <td> erase()</td> <td> 删除 set 容器中存储的元素。</td> </tr> <tr> <td> swap()</td> <td> 交换 2 个 set 容器中存储的所有元素。这意味着,操作的 2 个 set 容器的类型必须相同。</td> </tr> <tr> <td> clear()</td> <td> 清空 set 容器中所有的元素,即令 set 容器的 size() 为 0。</td> </tr> <tr> <td> emplace()</td> <td> 在当前 set 容器中的指定位置直接构造新元素。其效果和 insert() 一样,但效率更高。</td> </tr> <tr> <td> emplace_hint()</td> <td> 在本质上和 emplace() 在 set 容器中构造新元素的方式是一样的,不同之处在于,使用者必须为该方法提供一个指示新元素生成位置的迭代器,并作为该方法的第一个参数。</td> </tr> <tr> <td> count(val)</td> <td> 在当前 set 容器中,查找值为 val 的元素的个数,并返回。注意,由于 set 容器中各元素的值是唯一的,因此该函数的返回值最大为 1。</td> </tr> </tbody> </table> ## Multiset
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up