易语言教程_易语言源码_易语言视频教程_易语言论坛

 找回密码
 点击注册

Vip新手入门区
新手学习指南  学员作品展示 Vip课程总纲  Vip绝密课程系列

Vip相关下载区
Vip模块下载   Vip模块绑定   Vip模块例子 魔鬼插件下载  魔鬼插件例子  教程工具下载

Vip论坛服务区
教程问题提问区   模块问题提问区 技术交流区   魔鬼插件建议   忘记密码找回

VIP会员办理QQ: 8643245   
【请先加好友,然后到好友列表双击联系客服,办理VIP会员。】
【基础篇】易语言辅助入门基础教程
VIP模块办理QQ: 7189694 办理正版魔鬼作坊VIP模块 【基础篇】OD与CE入门基础教程
办理【终身VIP会员】“秒杀价” 仅需 RMB278.00元… 【基础篇】零基础绝密汇编语言入门课程 (共26课已完成)…
办理VIP详情…猛击这里查看详情 【基础篇】VIP辅助入门基础教程-新手必学 已发布10课 ……
VIP教程免费试看章节…猛击下载 【第1款】制作“辅助挂”教程目录查看(共107+16_x64下更新课已完成)…
亲爱的VIP学员,请到此写下你学习的感受与发布作品截图… 【第2款】制作“任务挂”教程目录查看(共77+1_x64下更新课已完成)…
卍解吧!不用bp send类封包断点找CALL的各种通杀思路 【第3款】驱动过保护技术课程(共38课已完成)…
【绝密教程】VIP绝密教程系列---注意:随时会更新! 【第4款】VIP邪恶二叉树辅助课程 (共31+17_x64下更新课已完成)…
【精品第13款】3D射击游戏与页游透视 智辅课程 已完成17课… 【第5款】零基础易语言按键辅助教程 (30课已完成)…
【精品第14款】变态功能辅助是如何炼成的 已完成36课… 【第6款】从零开始学习封包辅助技术教程(20课已完成) …
【精品第15款】DNF商业变态辅助的修炼之路 已完成27课… 【第7款】大杀特杀分析来源与CALL吸血鬼课程 (56课已完成)
【精品第16款】中控台多线程多开自动化商业辅助课程 已完成66课… 【第8款】完全零基础网页辅助课程(40课已完成)
【全新精品第17款】检测原理与过游戏内存检测技术课程 已发布9课… 【第9款】自动登录与操控LUA技术课程 (共46+8_x64下更新课已完成)…
【全新精品第18款】手游全自动化任务脚本辅助课程 已发布25课…… 【第10款】网页辅助封包脱机进阶课程 已完成30课…
【全新精品第19款】D3D方框骨骼透视与自瞄辅助课程进阶篇 已发布34课…… 【第11款】VC++ Lua脚本辅助课程 已完成112课…
【全新精品第20款】 X64模拟器吃鸡游戏方框透视自瞄辅助课程 发布中... 【第12款】网游脱机封包智辅课程 已完成35课…
12
返回列表 发新帖
楼主: sev2008

C++新手学习(附教程下载地址)

[复制链接]

54

主题

98

回帖

130

积分

终身VIP会员

花钱是让你服务的,不是叫你大哥 ...

Rank: 7Rank: 7Rank: 7

魔鬼币
10632
 楼主| 发表于 2011-5-4 13:17:56 | 显示全部楼层
第八章 暂略.........................

54

主题

98

回帖

130

积分

终身VIP会员

花钱是让你服务的,不是叫你大哥 ...

Rank: 7Rank: 7Rank: 7

魔鬼币
10632
 楼主| 发表于 2011-5-4 13:18:13 | 显示全部楼层
习题9.1
解释下列初始化,指出哪些是错误的,为什么?
int ia[7]={0,1,1,2,3,5,8};
string sa[6]={“fort sumter”,”manassas”,”Perryville”,”Vicksburg”,”merdian”,”Chancellorsville”};
(a). vector<string>svec(sa,sa+6); 正确
(b). list<int>ilist(ia+4, ia+6); 正确
(c). vector<int>ivec(ia, ia+8); 正确
(d). list<string>slist(sa+6,sa); 正确

习题9.2
创建和初始化一个vector对象有四种方式,为每种方式提供一个例子,并解释每个例子生成的vector对象包含什么值。
1.         vector<int>ivec;
        vector<int>ivec2(ivec); //用一个容器初始化为另一个容器的副本;
容器ivec2对象中包含了容器ivec中的所有元素;
2.        vector<string>::iterator mid=svec.begin()+svec.size()/2; //初始化为一段元素的副本;
3.        vector<int>ivec(64,2); //分配和初始化指定书目的元素;
4.        略。

习题9.3
解释复制容器对象的构造函数和使用两个迭代器的构造函数之间的差别。
略。

习题9.4
定义一个list对象来存储deque对象里的元素,该deque对象存放int型元素。
list< deque<int> > ilists;

习题9.5
为什么我们不可以使用容器来存储iostream对象?

习题9.6
假设有一个名为Foo的类,这个类没有定义默认构造函数,但提供了需要一个int型参数的构造函数,定义一个存放Foo的list对象,该对象有10个元素。
list<Foo> ok(10,1);

习题9.7
下面的程序错在哪里?如何改正?
    list<int> lst1;
        list<int>::iterator iter1=lst1.begin();
                       iter2=lst1.end();
while(iter1<iter2) /*…………*/
第一个错误,首先初始化iter2之前要加上list<int>::iterator;
第二个错误,list容器的迭代器不支持关系运算。

习题9.8
假设vec_iter与vector对象的一个元素捆绑在一起,该vector对象存放string类型的元素,请问下面的语句实现什么功能?
if (vec_iter->empty())/*…………*/
判断字符串是否为空。

习题9.9
编写一个循环将list容器的元素逆序输出。
        list<int> ilist;
        for(list<int>::iterator iter1=ilist.end();iter1!=ilist.begin();--iter1)
                cout<<*iter1;

习题9.10
系列迭代器的用法哪些(如果有的话)是错误的?
        const vector<int>ivec(10);
        vector <string> sevc(10);
        list<int> ilist(10);

        vector <int>::iterator iter=ivec.begin(); //WRONG
        list<int>::iterator iter=ilist.begin();  //RIGHT
        vector<string>::iterator it=&svec[0];  //WRONG
        for (vector<string>::iterator it=sevc.begin();it!=0;++it)  //RIGHT

习题9.11
要标记出有效的迭代器范围,迭代器需满足什么约束?
答:它们指向同一个容器中的元素或超出末端的下一位置。
如果这两个迭代器不相等,则对first反复做自增运算必须能够到达last。换句话说,在容器中,last绝对不能位于first之前。

习题9.12
编写一个函数,其形参是一对迭代器和一个int型数值,实现在迭代器标记范围内寻找该int型数值的功能,并返回一个bool结,以指明是否找到指定数据。
bool func(vector<int>,int);
int main()
{
        int sarray[5]={1,2,3,4,5};
        vector<int> ivec1(sarray,sarray+4);
        cout<<func(ivec1,2);
        return 0;
}
bool func(vector<int> ivec2,int x)
{
        for(vector<int>::iterator iter=ivec2.begin();iter!=ivec2.end();++iter)
                if(*iter==x){return true;break;}
                return false;
}

习题9.13
重写程序,查找元素的值,并返回指向找到的元素的迭代器。确保程序在要寻找的元素不存在时也能工作。
int main()
{
        int sarray[5]={1,2,3,4,5};
        vector<int> ivec1(sarray,sarray+4);
        cout<<func(ivec1,6);
        return 0;
}
bool func(vector<int> ivec2,int x)
{
        for(vector<int>::iterator iter=ivec2.begin();iter!=ivec2.end();++iter)
                if(*iter==x){return iter;break;}
                return false;

习题9.14
使用迭代器编写程序,从标准输入设备读入若干string对象,并将它们存储在一个vector对象中,然后输出该vector对象中的所有元素。

习题9.15
用list容器类型重写习题9.14得到的程序,列出改变了容器类型后要做的修改。

习题9.16
int型的vector容器应该使用什么类型的索引?
Iterator

习题9.17
读取存放string对象的list容器时,应该使用什么类型?
const_iterator

习题9.18
编写程序将int型的list容器的所有元素复制到两个deque容器中。List容器的元素如果为偶数,则复制到一个deque容器中;如果为奇数,则复制到另一个deque容器里。
        int ia[10]={1,2,3,4,5,6,7,8,9,10};
        list<int> ilist(ia,ia+10);
        list<int>::iterator first=ilist.begin();
        deque<int> ideq1;
        deque<int> ideq2;
        for(;first!=ilist.end();++first)
                if(*first%2==0)
                {ideq1.push_front(*first);}
                else ideq2.push_front(*first);
        return 0;

习题9.19
假设iv是一个int型的vector容器,下列程序存在什么错误?如何改正之。

习题9.20
编写程序判断一个vector<int>容器所包含的元素是否与一个list<int>容器所包含的元素完全相同。

习题9.21
假设c1和c2都是容器,下列用法给c1和c2的元素类型带来什么约束?
If(c1<c2)
(如果有的话)对c1和c2的约束又是什么?
答: 要实现两个容器的比较,比较的容器必须具有相同的容器类型,而且其元素类型也必须相同。

习题9.22
已知容器vec存放了25个元素,那么vec.resize(100)操作实现了什么功能?若再做操作vec.resize(10),实现的又是什么功能?
答: 在容器vec的尾部增加75个值为0的元素,然后将容器vec的后90个元素擦除掉,将容器vec的大小调整为10.

习题9.23
使用只带有一个长度参数的resize操作对元素类型有什么要求?(如果有的话)

习题9.24
编写程序获取vector容器的第一个元素。分别使用下标操作符、front函数以及begin函数实现该功能,并提供空的vector容器测试你的程序。
        vector <int> ivec(0);
    vector<int>::iterator iter1=ivec.begin();
    vector<int>::iterator iter2=&ivec.front();
        cout<<*iter1<<endl;
    cout<<ivec[0]<<endl;
cout<<ivec.at(0)<<endl;
最后导致程序崩溃出错。

习题9.25
需要删除一段元素时,如果val1与val2相等,那么程序会发生什么事情?如果val1和val2中的一个不存在,或两个都不存在,程序又会怎么样?
答:如果val1和val2相等,那么删除指向第一个val1开始到指向val2之间的所有元素,包括val1,但不包括val2.
如果val1不存在,val2存在,那么elem指向容器最后一个元素的下一个位置。
如果val1存在,val2不存在,那么删除指向val1开始到容器末尾的所有元素。
如果val1和val2都不存在,那么elem指向容器最后一个元素的下一个位置,并且不删除任何容器内的元素。

习题9.26
假设有如下ia的定义,将ia复制到一个vector容器和一个list容器中。使用单个迭代器参数版本的erase函数将list容器中的奇数值元素删除掉,然后将vector容器中的偶数值元素删除掉。
int ia[]={0,1,1,2,3,5,8,12,21,55,89};

习题9.27
编写程序处理一个string类型的list容器。在该容器中寻找一个特殊值,如果找到,则将它删除掉。用deque容器重写上述程序。
        list<string> slist;
        list<string>::iterator elem;
        elem1=find(slist.begin(),slist.end(),val1);
        if(elem1!=slist.end())
                slist.erase(elem);

习题9.28
编写程序将一个list容器的所有元素赋值给一个vector容器,其中list容器中存储的是指向C风格字符串的char*指针,而vector容器的元素则是string类型。

习题9.29
解释vector的容量和长度之间的区别。为什么在连续存储元素的容器中需要支持”容量”的概念?而非连续的容器,如list,则不需要。
长度指容器当前拥有的元素个数,而容量则指容器在必须分配新存储空间之前可以存储的元素总数。举个例子,容器的长度好比是一个储蓄罐中硬币的数量,而容器的容量可以看做是这个储蓄罐可以存放的硬币的数量。
List容器,在每添加一个新元素的时候,标准库将新元素连接到已存在的链表中,不需要重新分配存储空间。

习题9.30
编写程序研究标准库为vector对象提供的内存分配策略。
    vector<int> ivec;
        cout<<"ivec.size:"<<ivec.size()<<endl;
        cout<<"icapacity:"<<ivec.capacity()<<endl;
    vector<int> iivec(10,10);
        iivec.reserve(20);
    cout<<"iivec.size:"<<iivec.size()<<endl;
        cout<<"iicapacity:"<<iivec.capacity()<<endl;
    while(iivec.size()!=iivec.capacity())
                iivec.push_back(0);
    cout<<"iivec.size:"<<iivec.size()<<endl;
        cout<<"iicapacity:"<<iivec.capacity()<<endl;
        iivec.push_back(0);
    cout<<"iivec.size:"<<iivec.size()<<endl;
        cout<<"iicapacity:"<<iivec.capacity()<<endl;
分别输出0,0,10,20,20,20,21,40。

习题9.31
容器的容量可以比其长度小吗?在初始时或插入元素后,容量是否恰好等于所需要的长度?为什么?
答: 不可以。不一定。当容器为空的时候,插入第一个元素的后,容量和长度都为1,当容器容量为1的时候,插入一个元素,容量和长度都为2,当容器容量为2的时候,插入一个元素,容量为4,长度为3;

习题9.32
解释下面程序实现的功能:
    vector<string> svec;
        svec.reserve(1024);
        string text_word;
        while(cin>>text_word)
                svec.push_back(text_word);
        svec.resize(svec.size()+svec.size()/2);
        cout<<svec.size()<<endl;
        cout<<svec.capacity()<<endl;
如果该程序读入了256个单词,在调整大小后,该容器的大小为484.容量为1024.
如果读入512,在调整大小后,该容器的大小为768.容量为1024.
如果读入1000,容器的大小为1500.容器的大小为2000.

59

主题

179

回帖

178

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
58088
发表于 2011-7-15 23:29:51 | 显示全部楼层
VC++深入详解视频教程

0

主题

11

回帖

8

积分

编程入门

Rank: 1

魔鬼币
76
发表于 2011-7-17 21:53:45 | 显示全部楼层
谢谢楼主!!!

41

主题

210

回帖

167

积分

终身VIP会员

Rank: 7Rank: 7Rank: 7

魔鬼币
36045
发表于 2011-7-17 22:03:12 | 显示全部楼层
易语言学好了吗,   你时间充足呀
这学门编程,学好还不得2-3年。   把易语言学好就行了,学那么多有啥用啊,浪费时光,能赚几万吗。  一看就是个娃娃。 不知道路有多么的难走,只看见进的,瞧不见远的
您需要登录后才可以回帖 登录 | 点击注册

本版积分规则

魔鬼作坊|易语言教程|易语言源码|易语言论坛|易语言视频教程| 论坛导航|免责申明|手机版||网站地图
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表魔鬼作坊立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2010-2019 All Right Reserved.
快速回复 返回顶部 返回列表