热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[c++基础]STL

cppfig15_10.cppincludeincludeusingnamespacestd;templatevoidprintVector(constvector&integer

技术图片


//fig15_04.cpp
#include 
#include  //ostream_iterator istream_iterator

using namespace std;

//输入两个数 输出两个数的和
int main()
{
    istream_iterator inputInt(cin);//与cin关联上

    int num1 = *inputInt;//接受一个整数
    ++inputInt;//移动到下一个输入值
    int num2 = *inputInt;//接受下一个输入

    ostream_iterator outputInt(cout);//与cout关联上
    cout <<"the sum is ";
    *outputInt = num1 + num2;//接受一个输出
    cout <

迭代器还可以这么用 ,卧槽!

迭代器的类型

技术图片

技术图片

标准容器支持的迭代器

技术图片

顺序容器

Vector

例子-使用迭代器遍历vector-顺序和逆序



//fig15_10.cpp
#include 
#include 

using namespace std;

template 
void printVector(const vector& integers)
{
    for (auto cOnstIterator= integers.cbegin();
        constIterator != integers.cend(); ++constIterator)
    {
        cout <<*constIterator <<" ";
    }
    cout <
void printReverseVector(const vector& integers)
{
    for (auto cOnstReverseIterator= integers.crbegin();
        constReverseIterator != integers.crend(); ++constReverseIterator)
    {
        cout <<*constReverseIterator <<" ";
    }
    cout < integers;

    cout <<"The initial size of integers is" <

技术图片

例子-操作vector元素




//fig15_11.cpp
#include 
#include 
#include 
#include 
#include 
#include 

using namespace std;

int main()
{
    const size_t SIZE = 6;
    array values = { 1,2,3,4,5,6 };

    vector integers(values.cbegin(),values.cend());//使用array来初始化vector

    ostream_iteratoroutput(cout, " ");//通过迭代cout来输出元素,以空格来分隔
    
    //输出
    cout <<"Vector integers contains:";
    copy(integers.cbegin(), integers.cend(), output);

    //首尾元素
    //front和back返回的是元素的引用,而begin和end返回的是随机访问迭代器
    if (!integers.empty())//检查vector是否为空,不检查的话 如果integers是空,则运行时报错
    {
        cout <<"\nFirst element is " <

技术图片

List


//fig15_13.cpp
//List

#include 
#include 
#include 
#include 
#include 

using namespace std;

template 
void printList(const list& listRef)
{
    if (listRef.empty())
    {
        cout <<"list is empty!" < output(cout, " ");
        copy(listRef.cbegin(), listRef.cend(), output);
    }
    cout <ints = { 1,2,3,4 };

    list values;
    list otherValues;

    values.push_front(1);
    values.push_front(2);
    values.push_back(4);
    values.push_back(3);

    cout <<"List contains:";
    printList(values);

    //排序
    values.sort();
    cout <<"values after sorting contains:";
    printList(values);

    //使用array来插入otherValues
    otherValues.insert(otherValues.cbegin(), ints.cbegin(), ints.cend());
    cout <<"After insert ,otherList contains:";
    printList(otherValues);

    //splice做了两步:第一步将othevalues里的值插入到values.cend(),第二步将otherValues里的值清空
    values.splice(values.cend(), otherValues);
    cout <<"After splice values contains:";
    printList(values);

    cout <<"After splice ,otherValues contains:";
    printList(otherValues);



    otherValues.insert(otherValues.cbegin(), ints.cbegin(), ints.cend());
    cout <<"After insert and sort ,otherList contains:";
    otherValues.sort();
    printList(otherValues);

    values.sort();
    //使用merge前,两个容器必须先排序
    //merge也是做了两步,第一步将两个容器归并(类似于归并排序),第二步将otherValues清空
    values.merge(otherValues);
    cout <<"After merge values contains:";
    printList(values);

    cout <<"After merge otherValues contains:";
    printList(otherValues);
    
    values.pop_front();
    values.pop_back();
    cout <<"After pop_front and pop_back values contains:";
    printList(values);

    //去重
    values.unique();
    cout <<"After unique, values contains:";
    printList(values);

    //交换
    values.swap(otherValues);
    cout <<"After swap values contains:";
    printList(values);

    cout <<"After swap otherValues contains:";
    printList(otherValues);

    //赋值
    values.assign(otherValues.cbegin(), otherValues.cend());
    cout <<"After assign values contains:";
    printList(values);

    values.push_front(4);
    cout <<"After push_front(4) values contains:";
    printList(values);

    //移除所有的4
    values.remove(4);
    cout <<"After remove(4) values contains:";
    printList(values);



    return 0;
}

技术图片

deque


//fig15_14.cpp
//deque 双端队列
#include 
#include 
#include 
#include 
using namespace std;


int main()
{
    dequevalues;
    ostream_iterator output(cout, " ");

    //双端
    values.push_front(2.2);
    values.push_front(3.5);
    values.push_back(1.1);

    //随机访问
    cout <<"values contains:";
    for (size_t i = 0; i 

技术图片

关联容器

multiset



//fig15_15.cpp
//multi_set
#include 
#include 
#include 
#include 
#include 


using namespace std;

int main()
{

    const size_t SIZE = 6;
    array a = { 11,21,13,21,54,66 };

    //按照从小到大顺序排序 less
    multiset> intMultiset;
    ostream_iterator output(cout, " ");

    //count 是说该元素在multiset中含有几个
    cout <<"There are currently " <

技术图片

multimap


//fig15_16.cpp
//multimap
#include 
#include 
#include 
#include 

using namespace std;

int main()
{
    multimap> mymap;

    //count 是说该元素在multiset中含有几个
    cout <<"There are currently " <

技术图片

map


//fig15_18.cpp
//map
#include 
#include 

using namespace std;

int main()
{
    map>mymap;

    mymap.insert(make_pair(15, 2.7));
    mymap.insert(make_pair(11, 2.7));
    mymap.insert(make_pair(12, 2.7));
    mymap.insert(make_pair(15, 2.6));//ignored
    mymap.insert(make_pair(15, 2.1));//ignored

    mymap[11] = 11;

    for (auto it : mymap)
    {
        cout <

技术图片

[c++基础]STL


推荐阅读
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文总结了2018年的关键成就,包括职业变动、购车、考取驾照等重要事件,并分享了读书、工作、家庭和朋友方面的感悟。同时,展望2019年,制定了健康、软实力提升和技术学习的具体目标。 ... [详细]
  • 火星商店问题:线段树分治与持久化Trie树的应用
    本题涉及编号为1至n的火星商店,每个商店有一个永久商品价值v。操作包括每天在指定商店增加一个新商品,以及查询某段时间内某些商店中所有商品(含永久商品)与给定密码值的最大异或结果。通过线段树分治和持久化Trie树来高效解决此问题。 ... [详细]
  • 1:有如下一段程序:packagea.b.c;publicclassTest{privatestaticinti0;publicintgetNext(){return ... [详细]
  • 深入理解Cookie与Session会话管理
    本文详细介绍了如何通过HTTP响应和请求处理浏览器的Cookie信息,以及如何创建、设置和管理Cookie。同时探讨了会话跟踪技术中的Session机制,解释其原理及应用场景。 ... [详细]
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 如何在WPS Office for Mac中调整Word文档的文字排列方向
    本文将详细介绍如何使用最新版WPS Office for Mac调整Word文档中的文字排列方向。通过这些步骤,用户可以轻松更改文本的水平或垂直排列方式,以满足不同的排版需求。 ... [详细]
  • UNP 第9章:主机名与地址转换
    本章探讨了用于在主机名和数值地址之间进行转换的函数,如gethostbyname和gethostbyaddr。此外,还介绍了getservbyname和getservbyport函数,用于在服务器名和端口号之间进行转换。 ... [详细]
  • 本文介绍如何通过Windows批处理脚本定期检查并重启Java应用程序,确保其持续稳定运行。脚本每30分钟检查一次,并在需要时重启Java程序。同时,它会将任务结果发送到Redis。 ... [详细]
  • 本文探讨了如何在模运算下高效计算组合数C(n, m),并详细介绍了乘法逆元的应用。通过扩展欧几里得算法求解乘法逆元,从而实现除法取余的计算。 ... [详细]
  • 扫描线三巨头 hdu1928hdu 1255  hdu 1542 [POJ 1151]
    学习链接:http:blog.csdn.netlwt36articledetails48908031学习扫描线主要学习的是一种扫描的思想,后期可以求解很 ... [详细]
  • 本文介绍如何使用 NSTimer 实现倒计时功能,详细讲解了初始化方法、参数配置以及具体实现步骤。通过示例代码展示如何创建和管理定时器,确保在指定时间间隔内执行特定任务。 ... [详细]
author-avatar
dx152
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有