c++ primer 第9章 顺序容器

本文探讨了容器的构造、支持的功能以及迭代器的操作。详细介绍了如何使用容器进行元素访问、随机访问、倒序输出及迭代器的使用,同时解释了vector、deque、list容器的特点与区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

容器的构造 需要类的构造函数

io不支持复制构造函数和赋值构造函数,所以不能作为容器的对象。

vector 和 deque 支持元素的随机访问。

list容器迭代器不支持算术运算,也不支持关系运算。

倒序输出容器元素
    int a[]={1,2,3,4,5,6,7,8,9};
    list<int>temp(a,a+9);
    list<int>::iterator iter1=temp.begin();
    list<int>::iterator iter2=temp.end();
    while (iter2!=iter1)
        cout<<*(--iter2)<<endl;

 

#include  "item_base.h"
#include  "test.h"
#include <string.h>


int main(void)
{
    int a[]={1,2,3,4,5,6,7,8,9};
    list<int>temp(a,a+9);
    list<int>::iterator iter;
    list<int>::iterator iter1=temp.begin();
    list<int>::iterator iter2=temp.end();
   /*
    while (iter2!=iter1)
        cout<<*(--iter2)<<endl;
   for(iter=temp.end();iter!=temp.begin();)
   {
        cout<<*(--iter)<<endl;
   }

   //这个是错误的
   for(iter=temp.end();iter!=temp.begin();--iter)
   {
        cout<<*iter<<endl;
   }
   */
    return 0;
}

 

while(first!=last)
{
 ...
 ++first;
}

 

string str;
list<string>temp;

list<string>::iterator iter=temp.begin();

while(cin>>str)
 iter=temp.insert(iter,str);

这段相当于push_front       注意   iter=temp.insert()   这有个重置工作,insert函数返

回指向新插入元素的迭代器。容器添加元素可能会使迭代器失效。

 

 

 

bool findint(vector<int>::iterator beg,vector<int>::iterator end, int val)
{
    while(beg!=end)
    {
        if(*beg==val)
        {
            break;
        }
        else
            beg++;
    }
    if(beg!=end)
        return true;
    else
        return  false;
}
/*
vector<int>::iterator findint(vector<int>::iterator beg,vector<int>::iterator end,int val)
{
    while(beg!=end)
    {
        if(*beg==val)
        {
            break;
        }
        else
            ++beg;
    }
    return beg;
}

*/


    /*
    //为什么出错,再看看
    vector<string>temp(10);
    vector<string>::iterator iter=&temp[0];
    */

    /*
    vector<string>temp;
    string str;
    cout<<"please input the string /n";
    while(cin>>str)
    {
        temp.push_back(str);
    }
    copy(temp.begin(),temp.end(),ostream_iterator<string>(cout,"/n"));
    */

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值