码迷,mamicode.com
首页 > 编程语言 > 详细

C++ Primer笔记 容器和算法(1)

时间:2014-09-29 01:39:37      阅读:269      评论:0      收藏:0      [点我收藏+]

标签:c++

C++ 容器和算法(1)

 

“泛型算法”:

1.      算法可以作用于不同的容器类型。

2.      容器容纳多种不同类型元素

 

顺序容器: vector list deque(全称double-ended queue)

适配器: stack queue priority_queue

 

定义: vector<string> svere;

 

 C c(b,e)当[b,e) 左开右闭之间的元素。

 C c(n,d)初始化n个d

 

复制构造  vector<int> ivec;    vector<int> ivec2(ivec)

 

利用迭代器传递不同的类型容器之间的数据

 

Vector<string>::iteratormid=svec.begin()+svec.size()/2;

Deque<string> front(svec.begin(),mid);

 

什么类型可以做容器的元素类型( 可复制,可赋值) //引用不行  IO也不行

 

测试列子:

Vector<Foo> empty;

Vector<Foo> bad(10);

Vector<Foo> ok(10,1);

 

其中Foo 无默认构造函数 , 但有int型形参构造函数.

 

class Foo
{
public:
     int data;
     Foo(int a){this->data=a;}
};
 
int main()
{
     //vector<Foo> foo1(10,1);//对 创建个值为的foo1顺序表
     //vector<Foo> foo2(10); //错  没有默认无参构造函数
     //vector<Foo> foo3; //对 根本没有调用任何构造函数
     //Foo f();//像是声明了一个函数 这可不是对象实例化哦因为没有f()这个构造函数
     Foo f;//直接报错因为没有无参构造函数
     //Foo *f=new Foo();//报错同上
     //Foo *f=new Foo;//报错同上
     getchar();
     return 0;
}


 

二维嵌套

Vector< vector<string> >lines; // > >之间一定要加空格,不然会当成>>位移运算符

 

迭代器和迭代器范围

 

Vector 和deque 迭代器可以 iter+n iter-n

List不能随机访问,不能作比较 < >之类的

 

迭代器范围

End指向最后一个元素的下一个位置

[begin,end)

 

Size_type iterator const_iterator

 

c.begin()  c.end() c.rbegin()翻转  c.rend()

 

c.push_back(x)  c.insert(p,t) c.push_front(x)(只能list和deque) c.insert(p,n,t)

 

更新后注意重置迭代器

While(first!=v.end())

{

     First=v.insert(++first,42);

++first;

}

 

c.resize(n,t) 调整为n,用t来补充不够的

 

list<int>::referencelast=*list.begin();

last为引用

 

c[n] c.at(n) 可以用(vector deque)

 

c.pop_back()  删除容器c的最后一个元素

c.pop_front() 只适用于list deque

P286

 

C++ Primer笔记 容器和算法(1)

标签:c++

原文地址:http://blog.csdn.net/cq361106306/article/details/39651735

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!