网站的域名起什么好处,淘宝店网站论坛怎么做,旅游网站的建设开题报告,网站维护后期费用参考资料#xff1a; cppreference.com
本文代码#xff1a; 本文源码 目录隐式成员函数1.operator #xff08;赋值给容器#xff09;2.assign #xff08;将值赋给容器#xff09;元素访问3.at #xff08;访问指定元素#xff0c;进行下标检查#xff09;4.operat…参考资料 cppreference.com
本文代码 本文源码
目录隐式成员函数1.operator 赋值给容器2.assign 将值赋给容器元素访问3.at 访问指定元素进行下标检查4.operator[] 访问指定元素可能出现访问越界5.front 访问第一个元素6.back 访问最后一个元素7.data 返回数组第一个元素的地址指针迭代器8.begin/cbegin 返回指向容器第一个元素的迭代器 /常量迭代器9.end/cend返回指向容器尾端的迭代器/常量迭代器10.rbegin/rcbegin返回指向容器最后一个元素的迭代器/常量迭代器11.cend/crend 返回指向容器前端的逆向迭代器/常量迭代器容量12.empty 判断容器是否为空13.size 返回容器当前元素个数14.max_size 返回容器可容纳的最大元素个数15.reserve 增加容器容纳空间16.capacity 返回容器当前可容纳的元素个数17.shrink_to_fit 回收容器未使用的空间修改器18.clear 清除容器中的所有元素19.insert 在容器的指定位置插入指定的值20.emplace 21.erase 移除容器内指定位置的值22.push_back 从容器的尾端添加元素23.emplace_back 24.pop_back 移除容器最后一个元素 25.resize 改变容器存储元素个数26.swap 交换两个容器的内容
](目录)隐式成员函数
1.operator 赋值给容器
可以用 来进行 vector 的赋值赋值后他们是两个不同的东西即使修改了vec也不会修改对tempVec是深拷贝
vectorint vec;
vectorint tempVec;
tempVec vec;2.assign 将值赋给容器
void assign( size_type count, const T value );简单来说就是将vector的内容转成count个value
tempVec.assign(10,6)
/*
输出
6 6 6 6 6 6 6 6 6 6
*/
元素访问
3.at 访问指定元素进行下标检查
当site超出范围的时候会跑出 std::out_of_range 类型异常
vec.at(site)4.operator[] 访问指定元素可能出现访问越界
vec[site]5.front 访问第一个元素
vec.front()6.back 访问最后一个元素
vec.bakc()7.data 返回数组第一个元素的地址指针
返回的是指向第一个元素的指针
vec.data(site)迭代器
最简单地理解就是操作容器的指针
8.begin/cbegin 返回指向容器第一个元素的迭代器 /常量迭代器
返回指向第一个元素的迭代器/常量迭代器指向的内容不能改变指向谁可以改
std::vectorint::iterator itr vec.begin();
//指向第二个元素
std::cout*(itr)std::endl; std::vectorint::const_iterator cItr vec.cbegin();
//指向第一个元素
std::cout*cItrstd::endl;//可以这样
cItr itr;
//不可以这样*(cItr)9.end/cend返回指向容器尾端的迭代器/常量迭代器
返回指向最后一个元素的后一个位置的迭代器最后一个元素的身后和begin类似至于cend除了作为vector的结束之外还有什么用就暂时还没想到。
std::vectorint::iterator itr vec.end();
//倒数第一个元素
std::cout *(--itr) std::endl;std::vectorint::const_iterator cItr vec.cend();
//顺序打印vec
for(itr vec.beign();i!cItr;i){std::cout*i ;
}10.rbegin/rcbegin返回指向容器最后一个元素的迭代器/常量迭代器
这是一个逆向迭代器使用 的时候不是往后移动而是往前移动使用 – 才能往后移动。
std::vectorint::reverse_iterator itr vec.rbegin();
//倒数第二个元素
std::cout *(itr) std::endl;std::vectorint::const_reverse_iterator cItr vec.crbegin();
//最后一个元素
std::cout *cItr std::endl;11.cend/crend 返回指向容器前端的逆向迭代器/常量迭代器
和end类似end指向容器最后一个元素的后一个位置rend指向容器第一个元素的前一个位置所以我也不知道这个crend的其他作用
std::vectorint::reverse_iterator itr vec.rend();
//第一个元素是
std::cout *(--itr) std::endl;std::vectorint::const_reverse_iterator cItr vec.crend();
//逆序打印vec
for (itr vec.rbegin(); itr ! cItr; itr) {std::cout *itr ;
}容量
12.empty 判断容器是否为空
为空时返回true非空时返回false
bool empty()
if (vec.empty()) {std::cout vec为空\n;}else {std::cout vec不为空\n;}
13.size 返回容器当前元素个数
vec.size();14.max_size 返回容器可容纳的最大元素个数
vec.max_size();15.reserve 增加容器容纳空间
将vec的容量增加到大于或等于count如果count小于当前的已分配的控件大小就不做任何事。
vec.reserve(count);16.capacity 返回容器当前可容纳的元素个数
vec.capacity();17.shrink_to_fit 回收容器未使用的空间
//假设输出10vec.size()也是返回10
std::cout vec.capacity() std::endl;
//增加容量
vec.reserve(50);
//此时输出50
std::cout vec.capacity() std::endl;
//回收空间
vec.shrink_to_fit();
//输出10
std::cout vec.capacity() std::endl;修改器
18.clear 清除容器中的所有元素
// 假设输出10
std::cout vec.size() std::endl;
vec.clear();
// 输出0
std::cout vec.size() std::endl;19.insert 在容器的指定位置插入指定的值
//插入之前1 3 5 7 9
//在第3个位置插入4
tempVec.insert(tempVec.begin() 3, 4);
//1 3 5 4 7 9//在第3个位置插入4个5
tempVec.insert(tempVec.begin() 3, 4, 5 );
//1 3 5 5 5 5 5 4 7 920.emplace
21.erase 移除容器内指定位置的值
//删除第3个位置的值
tempVec.erase(tempVec.begin()3);//删除容器第0到第5个元素不包括第5个即[0,5)
tempVec.erase(tempVec.begin(), tempVec.begin() 5);22.push_back 从容器的尾端添加元素
//vec: 1 3 5
vec.push_back(7)
//vec: 1 3 5 723.emplace_back
24.pop_back 移除容器最后一个元素
//vec: 1 3 5 7
vec.pop_back();
//vec: 1 3 525.resize 改变容器存储元素个数
如果num小于容器当前元素个数则只保留容器前num个 如果num大于容器当前元素个数则往容器添加元素直至num个
//tempVec.size() 为 20
tempVec.resize(10)
//只剩下前10个元素了//添加到15个元素用默认值填充
tempVec.resize(15);
//现在tempVec的元素个数为15了而且后5个是0//添加到20个元素用指定值填充
tempVec.resize(20,999);
//现在tempVec的元素个数为20了而且后5个是999
26.swap 交换两个容器的内容
//交换前
//vec1 3 5 7
//tempVec2 4 6 8
vec.swap(tempVec)
//交换后
//vec2 4 6 8
//tempVec: 1 3 5 7