順序容器之插入insert

2021-07-23 21:03:06 字數 3216 閱讀 3580

---- c++標準庫定義了6種順序容器(sequential container)型別:

vector,deque,list,forward_list,array,string

---- 順序容器為程式設計師提供了控制元素儲存和訪問順序的能力,這種順序不依賴於元素的值,而是與元素加入容器時的位置相對應。

對順序容器內的元素按其位置儲存和訪問。

---- 標準庫中的所有容器都提供了快速順序訪問元素的能力,在以下方面有不同的效能折中:

--1)向容器新增或從容器刪除元素的代價。

--2)非順序訪問容器中元素的代價。

vector

可變大小陣列,支援快速隨機訪問。

在尾部之外的位置插入或刪除元素可能較慢。

deque

雙端佇列,支援快速隨機訪問,在頭尾位置插入/刪除速度很快。

list

雙向鍊錶,只支援雙向順序訪問。

在list中的任何位置進行插入/刪除操作速度快。

forward_list

單向鍊錶,支援單向順序訪問。插入/刪除速度快。

array

固定大小陣列

string

與vector相似的容器。

---- deque:雙端佇列,double-ended queue的簡寫,發音為「deck」。其實現類似於vector容器,支援隨機訪問。

主要區別在於:從deque物件的起始位置插入和刪除元素的時間是固定的,而不像vector中那樣是線性時間的。

所以如果多數操作發生在序列的起始和結尾處,則應考慮使用deque資料結構。  

-- 為實現在deque兩端執行插入和刪除操作的時間為固定的這一目的,deque物件的設計比vector物件更為複雜。

因此,儘管兩者都提供對元素的隨機訪問和在序列中部執行線性時間的插入和刪除操作,但vector容器執行這些操作時速度要快些。

---- 標準庫還提供了三種順序容器介面卡(adaptors):stack,queue,priority_queue

---- stack:後進先出(lifo)堆疊。

---- queue:先進先出(fifo)佇列。

---- priority_queue:有優先順序管理的佇列。

介面卡是根據原始的容器型別所提供的操作,通過定義新的操作介面,來適應基礎的容器型別。

1、push_back()

---- 所有順序容器都支援push_back()操作,提供在容器尾部插入乙個元素的功能。

---- 呼叫push_back函式會在容器尾部建立乙個新元素,並使容器的長度加1.

---- 除了push_back之外,list和deque容器型別還提供了push_front()實現在容器首部插入新元素的功能。

2、在順序容器中新增元素的操作

c.push_back(t)

在容器c的尾部新增值為t的元素。返回void型別

c.push_front(t)

在容器c的首部新增值為t的元素。返回void型別

只適用於list和deque容器型別

c.insert(p,t)

在迭代器p所指向的元素前面插入1個值為t的新元素。

返回指向新新增元素的迭代器。

c.insert(p,n,t)

在迭代器p所指向的元素前面插入n個值為t的新元素。

返回void型別

c.insert(p,b,e)

在迭代器p所指向的元素前面插入由迭代器b和e標記的

範圍內的元素。返回void型別

舉例說明:

3、容器的比較(關係操作符)

---- 相比較的容器必須具有相同的容器型別,而且其元素型別也必須相同。

例如:vector的容器只能與vector的容器比較,而不能與list或vector型別的容器比較。

---- 容器的比較是基於容器內元素的比較。

--1)如果兩個容器具有相同的長度而且所有元素都相等,那麼這兩個容器就相等;否則,它們就不相等。

--2)如果兩個容器的長度不相等,但較短的容器中的所有元素都等於較長容器中對應的元素,則稱較短的容器小於另乙個容器。

--3)如果兩個容器都不是對文的初始子串行,則它們的比較結果取決於所比較的第乙個不相等的元素。

例如:ivec1: 1 3 5 7 9 12

ivec2: 0 2 4 6 8 10

ivec3: 1 3 9

ivec4: 1 3 5 7

ivec5: 1 3 5 7 9 12

----   ivec1>ivec2  //true 1>0

----   ivec1----   ivec1==ivec5 //true

----   ivec1>ivec4 && ivec1!=ivec4

insert 插入資料

語法格式 insert into 表名稱 欄位名稱1,欄位名稱2 values 值1,值2,建立備份表myemp create table myemp as select from emp 標準語法 對於沒有資料的列就不寫進欄位列表 insert into myemp empno,ename,job...

插入資料 INSERT

顧名思義,insert是用來插入行到資料庫表的 插入可以用幾種方式使用 插入完整的行 插入行的一部分 插入多行 插入某些查詢結果 分析 此例子為插入乙個新客戶到customers表,如果某個列沒有值,應該使用null 表允許該值為空 第一列cust id也為null,因為這是自動增量 上面的語法很簡...

stl容器之順序容器

stl容器分為順序容器和關聯容器 其中順序容器最常用的由vector,list,queue 1.vector vector 向量容器,可以看作變長陣列,長度可根據需要自行變化。使用的標頭檔案 include 定義方式 vector陣列名 vectorar 訪問容器內資料的方式和普通陣列相同,可以用a...