C++标准模板库(STL)常见容器与算法介绍(1)

《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 通过迭代器(iterator)

vector::iterator it;

it就相当于是vector<typename>::iterator类型的变量。

可以用过*it的方式来访问元素

begin()end()

begin()获取vector元素的首地址,

end()获取末尾元素的下一个地址(遵循左闭右开的原则)

for(int i=0;i<5;i++){

vec.push_back(i);

}

vector::iterator it = vec.begin();

for(int i=0;i<5;i++){

printf(“%d\n”,*(it+i));

}

由此可见,vec[i]*(vec.begin()+i)的等价的。

注意:在STL容器里只有vectorstring支持v.begin()+整数的写法,因为其他容器的存储结构并不是线性的。

  • 迭代器与++!=运算符

注意不能写成it<vec.end()只能写成不等于。

for(vector::iterator it=vec.begin();it!=vec.end();it++){

printf(“%d\n”,*it);

}

常用函数


  • (1)push_back()

作用:在vector尾部添加一个元素,时间复杂度O(1);

  • (2)pop_back()

作用:删除vector尾部的一个元素,时间复杂度O(1);

  • (3)size(),获取vector中元素的个数,时间复杂度O(1),不过注意返回的是unsigne int类型。

  • (4)clear(),清空所有元素,时间复杂度O(N)

  • (5)insert(it,x),向vector任意迭代器的位置,插入一个元素,时间复杂度O(N)。注意第一个参数是迭代器,而不是整数。

说明,被插入的地方的元素以及它后面的所有元素(如果有)顺次向后移动一位

insert(vec.begin(),x) //在首部插入元素x;

insert(vec.end(),x) //在尾部添加元素x,相当于 push_back(x);

  • (6)erase()

  • (i) erase(it)

删除迭代器it处的元素。

for(int i=0;i<5;i++){

vec.push_back(i+1);

}

vec.erase(vec.begin()+3); //,下标为3,删除的是第4个元素

for(int i=0;i<vec.size();i++){

cout<<vec[i]<<endl;

}

1

2

3

5

  • (ii)erase(begin,last)的所有元素。

删除迭代器**[begin,last)**处的元素。注意左闭右开。

erase(vec.begin(),vec.end()) //删除*(vec.begin)……*(vec.end()-1);

// 也就是删除所有的元素。

string

========================================================================

头文件

#include //string.h是C语言中的。

定义


string str = “abcd”;

str = “defg”;

string的元素访问


  • (i)通过下标

通过下标访问就像是字符数组一样。

string s = “abc”

cout<<s[0]<<endl; // ‘a’

char c = s[0];

输入输出用cin 、cout

如果想用printf()呢,可以用c_str()将string转换为字符数组。

string s = “abc”;

printf(“%s\n”,s.c_str());

  • 通过迭代器

当然真正要用,是没有必要这样做的。

总结

总体来说,如果你想转行从事程序员的工作,Java开发一定可以作为你的第一选择。但是不管你选择什么编程语言,提升自己的硬件实力才是拿高薪的唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。


《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!
唯一手段。

如果你以这份学习路线来学习,你会有一个比较系统化的知识网络,也不至于把知识学习得很零散。我个人是完全不建议刚开始就看《Java编程思想》、《Java核心技术》这些书籍,看完你肯定会放弃学习。建议可以看一些视频来学习,当自己能上手再买这些书看又是非常有收获的事了。

[外链图片转存中…(img-YVbPkivI-1714412259238)]
《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值