STL&容器

来源:互联网 发布:淘宝4.0旧版 编辑:程序博客网 时间:2024/06/05 04:37

序列容器:

 

vector矢量容器 vector<int> mydata后面若有(100)表明是100个元素

                                             (100,-1)100个元素都是-1

                    mydata[2]=999

mydata.push_back(99)

mydata.pop_back()删除最后一个元素

mydata.clear()删除所有元素

慢!mydata.erase(mydata.end()-2)删除倒数第二个元素

mydata.erase(mydata.begin()+1,mydata.begin()+4)删除第234个元素(不包括最后一个

慢!mydata.insert(mydata.begin()+1,88)在第一个元素后面插入88

mydata.insert(mydata.begin()+1,2,88)第一个元素后面插入两个88

insert(1,2,3)2-3的东西插入到1不包括3,最后一个

mydata1.swap(mydata2)内容大小全部交换

mydata.assign(values.begin()+1,values.end()-1)替换(第二个迭代器不包括最后一个元素)

mydata.assign(30,99.5)替换成3099.5

mydata.reserve(100)创建容器后使之提供足以容纳100个元素的内存,仅当添加第101个元素时才会自动增加容量。每次增加当前容量的一半

          vector<double> mydata(data,data+8);data是数组名,data是数组中的第一次初始化元素(mydata.begin()),data+8mydata.end())是最后一个初始化元素的下一个位置,即把data[0]data[7]的值赋给mydata

 

容量capacity

            大小size

            vector<double>::size_type某变量名= mydata.capacity()

            mydata.empty()

 

 

 

 mydata.at(i)下标超过范围时会抛出out_of_range的异常

       mydata[i]不会抛出异常

           mydata.front()第一个元素

           mydata.back()最后一个

          const int &firstvalue=mydata.front()可以返回const引用,防止修改对象

           int &firstvalue=mydata.front()也可以

           只要随机访问迭代器包含的对象可以用<来比较,algorithm头文件中定义的sort()就可以对随即访问迭代器的容器的内容进行排序()sort(mydata.begin(),mydata.end())同时需要#includealgorithm头文件和using std::sort。也可以排序data数组sort(data,data+count)Sort也可以和functional头文件一起进行升序等

deque双端队列容器

不同的是它可以在序列在开头添加或删除push_front pop_front但是比矢量容器慢

list列表可以push_front push_back也可以mydata.insert(表示位置的数字或者迭代器,77)但是由于不能访问任意位置的元素,所以想得到第8个元素的迭代器,就要从1开始不停加到第8个

 由于不可以随意访问任何位置,所以list<T>模板定义自己的sort函数

         mydata.remove(22)删除所有等于22的元素

         mydata.unique()消除相邻重复元素

         mydata.splice(迭代器1,mydata2)迭代器1处插入mydata2

        mydata.splice(迭代器1,mydata2,迭代器2)迭代器1处插入:mydata2从迭代器2开始的元素,并且mydata2中删除对应元素

          mydata.splice(迭代器1,mydata2,迭代器2,迭代器3) 代器1处插入:mydata2从迭代器2开始到迭代器2结束的元素,并且mydata2中删除对应元素

          mydata1.merge(mydata2)把mydata2合并到mydata1后整体以升序排列,mydata2变空

queue队列容器先进先出,只能向队列的末尾添加或开头删除

 back,front,push后端添加,pop前端删除,size,empty.

priority_queue优先级队列容器默认基于vector只能访问前端元素

 top(不能访问队列后端,只能访问前端),push,pop,size,empty

最先进去的地方应该是top,(若用greater定义,则top是最小的)

char *firstname,secondname:要动态分配内存,需定义赋值运算符=

stringfirstname,secondname:不要,不需

Stack栈容器默认基于deque,后进先出

 top,push,pop,size,empty

array<T,N>数组容器

std::array<int,10>mydata={1,2,3,4,5}

可以用迭代器遍历,也可以像普通数组那样用索引遍历

typedefstd::tuple<int,std::string,std::string,int> Record;

std::array<Record,5> mydata={Record{1001,”Joan”,”Jetson”,35} ,

Record{1002,”Jim”,”Jones”,26},

}

Mydata[2]=std::make_tuple{1003,”Jean”,”Jorell”,29}添加元素

get<0>(1);mydata[1]的第0

 

 

 

0 0
原创粉丝点击