网站平台建设可行性,关键词优化排名用哪些软件比较好,网站中的轮播怎么做,西昌网站建设文章目录 引用头文件初始化赋值遍历 set 容器1. 迭代器遍历2. auto3. range for循环4. for_each 迭代器vector 常用方法返回 set 长度插入元素删除元素 set 为关联式容器#xff0c;翻译为集合#xff0c;其中的元素类型为 pair#xff0c;需要注意 set 容器存储的各个键值对… 文章目录 引用头文件初始化赋值遍历 set 容器1. 迭代器遍历2. auto3. range for循环4. for_each 迭代器vector 常用方法返回 set 长度插入元素删除元素 set 为关联式容器翻译为集合其中的元素类型为 pair需要注意 set 容器存储的各个键值对要求键 key 和值 value 必须相等
基于 set 容器的这种特性当使用 set 容器存储键值对时只需要为其提供各键值对中的 value 值也就是 key 的值即可。
{a, a, b, b, c, c}
// 当要使用set容器存储上面这种键值对时就可以转换成这样
{a,b,c}set 容器会自行根据键的大小对存储的键值对进行排序因为 set 容器中各键值对的键 key 和值 value 是相等的根据 key 排序也就等价为根据 value 排序。 唯一性set中元素没有重复值 有序性set容器中的元素按照升序排列
引用头文件
#include set初始化赋值
setint set2(set1);setint set1 {1, 2, 3};vectorint v {1, 2, 3, 4};
setint s(v.begin(), v.end());遍历 set 容器
不支持通过 索引 遍历
1. 迭代器遍历
void PrintfVector(setint s)
{// 注如果参数为const setint 需要用const_iterator// setint::const_iterator iters.begin();for(setint::iterator it s.begin(); it ! s.end(); it){cout(*it) ;}coutendl;
}2. auto
void PrintfSet(setint s)
{// 注如果参数为const setint 需要用const_iterator// setint::const_iterator iters.begin();for(auto it s.begin(); it ! s.end(); it){cout(*it) ;}coutendl;
}3. range for循环
void PrintfSet(setint s)
{// 注如果参数为const vectorint 需要用const_iterator// vectorint::const_iterator iterv.begin();for(auto key : s){cout( key ) ;}coutendl;
}4. for_each
for_each(iterator beg, iterator end, _callback);
setint s {3,5,1,7,10}; // vector容器auto print [](const auto x) // 定义一个lambda表达式
{cout x ,;
};
for_each(cbegin(v), cend(v), print);// for_each算法for_each( // for_each算法内部定义lambda表达式cbegin(v), cend(v), // 获取常量迭代器[](const auto x) // 匿名lambda表达式{cout x ,;}
);迭代器
在 set 中迭代器只支持 和 –- 操作
vector 常用方法
方法说明begin()返回指向容器中第一个注意是已排好序的第一个元素的双向迭代器。如果 set 容器用 const 限定则该方法返回的是 const 类型的双向迭代器。end()返回指向容器最后一个元素注意是已排好序的最后一个所在位置后一个位置的双向迭代器通常和 begin() 结合使用。如果 set 容器用 const 限定则该方法返回的是 const 类型的双向迭代器。rbegin()返回指向最后一个注意是已排好序的最后一个元素的反向双向迭代器。如果 set 容器用 const 限定则该方法返回的是 const 类型的反向双向迭代器。rend()返回指向第一个注意是已排好序的第一个元素所在位置前一个位置的反向双向迭代器。通常和 rbegin() 结合使用。如果 set 容器用 const 限定则该方法返回的是 const 类型的反向双向迭代器。cbegin()和 begin() 功能相同只不过在其基础上增加了 const 属性不能用于修改容器内存储的元素值。cend()和 end() 功能相同只不过在其基础上增加了 const 属性不能用于修改容器内存储的元素值。find(val)在 set 容器中查找值为 val 的元素如果成功找到则返回指向该元素的双向迭代器反之则返回和 end() 方法一样的迭代器。另外如果 set 容器用 const 限定则该方法返回的是 const 类型的双向迭代器。count(val) 在 set 容器中查找值为 val 元素的数量由于set 中没有重复 key所以其返回结果为 0/1lower_bound(val)返回一个指向当前 set 容器中第一个大于或等于 val 的元素的双向迭代器。如果 set 容器用 const 限定则该方法返回的是 const 类型的双向迭代器。upper_bound(val)返回一个指向当前 set 容器中第一个大于 val 的元素的迭代器。如果 set 容器用 const 限定则该方法返回的是 const 类型的双向迭代器。size()返回 set 容器中元素数量insert(key)在 set 容器中插入元素 keyset 容器会自动进行排序erase(key)在 set 容器中删除元素 keyclear(key)删除 set 容器中所有元素
返回 set 长度
s.size() 返回 set s 的元素个数
插入元素
s.insert(key) 将元素 key 插入到 s 中s.insert(v.begin(), v.end()) 将 v 中元素插入到 s 中s.insert( {key1, key2, key3} ) 插入多个元素
setint s {1, 2, 3};
vectorint v {4, 5, 6};
s.insert(7);
s.insert(v.begin(), v.end()-1); // 插入 4 5
s.insert({8, 9}); // 插入 8 9删除元素
s.erase(key) 删除值为 key 的元素s.erase(s.begin(), s.end()) 删除 迭代器区间 的元素
setint s {1, 2, 3, 4, 5, 6};
s.erase(6);
setint::iterator it s.begin();
setint::iterator it1 s.end();
it;
it1--;
s.erase(it, it1 ); // s: 1 5