泛型编程

@讲师张文杰—Geekband

这里写图片描述

1.概观

这里写图片描述

  • 将型别以一种 to-be-specified-later 方式给出
  • 通过模板以及相关性质表现的

2.Traits

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

…实际调试一遍

3.迭代器

  • 分离算法和容器

这里写图片描述

这里写图片描述

这里写图片描述

4.容器


容器的种类
1.vector
2.list
3.deque
4.set and Multiset
5.Map and MultiMap
6.stack
7.Queue


1.vector

这里写图片描述

  1. 能够存放任意型别的动态数组
  2. 一段地址连续的空间
  3. 动态的空间调整
  4. 向vector添加元素
//vector的声明
#include<vector>
 int main(){
    std::vector v;
}

这里写图片描述

push_back函数

向vector添加元素的方法,调用该函数,将元素加至其尾部

std::vector<std::wstring> v3;
for(std::size_t i=0;i<10;i++)
{
    std::wstringstream wss;
    wss<<TEXT("String[")<<i<<TEXT("]"));
    v3.push_back(wss.str());
}

empty()函数
size()函数

std::vector<std::wstring> v3;
bool isEmpty = v3.empty();

int array[] = {1,2,3,4,5,6,7,8,9,10};
std::vector<int> v(array,array+10);
std::size Vsize = v.size();

访问vector中的元素
vector::at()
vector:operator[]

这里写图片描述

这里写图片描述

std::vector<std::wstring> v;
v.reserve(10);
for(std::size_t i=0;i<3;i++){
    std::wstringstream wss;
    wss<<TEXT("String[")<<i<<TEXT("]");
    v.push_back(wss.str());
}

try{
    std::wstring wsz1 = v[5];
    std::wstring wsz2 = v.at(5);
}
catch(const std::exception& e){
    Console::WriteLine(ex.what());
}

C++里尽量少用try-catch,开销大。

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

2.Deque

这里写图片描述

3.List

这里写图片描述

这里写图片描述

  • 调试运行文件—test_fx
  • 使用list,必须用include,并通过std命名空间去访问

创建List
std::list l; 创建一个T型别的空list
std::list l(n);创建一个容量是n的T型别的list
std::list l(n,x); 创建一个容量是n的T型别的list,初始化为x
std::list copyOfList(l); 创建一个已有list的拷贝
std::wstring array[] = {TEXT(“Str-1”),TEXT(“Str-2”),TEXT(“Str-3”)};
std::list l(array,array+3);
通过一个数组创建一个list

常见操作

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

  • l.remove_if(ContainsString(TEXT(“C++”)));
  • //remove string that contains “C++”

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值