c++学习历程 -持续更新中

c++ -learn

1.关于vector

(1)vector的初始化赋值

vector<int> a = {1,2,3,4}; //正确
vector<int> a{1,2,3,4};    //正确
vector<int> a(4) = {1,2,3,4};  //错误
//但是要是想要一个空的 就得
vector<int> a(4);
vector<int> a(10,-1);  //初始10个整形全是-1

也可以下标赋值

vector<int> a(5,-1);
a[0] = 15;

也可以用一个vector给另一个初始化
vector a = {1,2,3};
vectorb(a);

(2)vector的灵活性
作为函数返回值可以相当于直接返回一个数组

vector<int> text()
{
	return {1,2,3,4};
}

这要是用c的话返回数组得靠指针。

2.迭代器

初始时候确实觉得迭代器与指针很类似;
像用
auto a = vector.begin(),
auto b = vector.end().
就可以直接通过 a 来引用第一个元素这里就和指针很像。
但是指针和迭代器不是一个东西
(1) 迭代器不是指针,是类模板,表现的 像 指针。他只是 模拟了指针的一些功能,通过 重载了指针的一些操作符,->,
,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,–等操作;

    vector<string> a = {"aa","bb","cc","dd"};
    auto it1 = a.begin();
    auto it2 = a.end();
    cout << *it1 <<endl;
    it1 ++;
    cout << *it1 << endl;

就是从 ”aa" 到 ”bb"
2)迭代器返回的是 对象引用而不是对象的值,所以cout只能输出迭代器使用 *取值后的值而不能直接输出其自身。
这里你 cout << it1 ; 就会报错。

想要知道迭代器具体是什么类型可以通过

#include <typeinfo>
 cout << typeid(it1).name() << endl;

3.关联容器map有关

(1)pair类型
我总结pair类型就是一个容器版的auto。
把两个数据合成一组数据的需要就可以用到pair.
小例子

    pair<string ,string>author {"james","joke"};
    cout << author.first << endl;
    cout <<author.second << endl; 

(2)map类型。
定义:
就是一个一对一的数据存储

map < key_type,mapped_type>;
map <string ,int> : : key_type a1; // a1 是一个string
map <string,int> : :mapped_value a2; //a2是一个int
map<string,int> : : value_type a3; //a3是一个pair<const string,int>

向map中插入元素。

map [ key_type ]  =  mapped_type ; // 下标插入,map会遍历所有的元素,要是有key_type 就把它的值赋为mapped_value,要是没有就重新新增。
    map<string,int> a;
    a["aa"] = 5;
    a.insert({"bb",7});
    a.insert(make_pair("cc",9));
    a.insert( pair<string,int>("dd",11) );
    a.insert( map<string,int> :: value_type("ee",13) );
    cout << a["ee"] << endl;

在map中查找元素的操作。
map.cout( k ); //返回关键字等于k 的元素的数量,对于不允许重复关键字的容器,返回值永远是0或者1

4.sort等函数STl

这里是引用这是一个讲解sort用法例子的网站

5.链表未学习

6.递归

对递归的思想要明白
深度优选搜索DFS ,要明白思路,可着一个节点搜索下去,
广度优先搜索BFS,解决最短路径问题

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值