std vector物件操作

2022-02-06 23:17:01 字數 1487 閱讀 8705

c++primer4

exercise 3.13:

讀一組整數到 vector 物件:

(1)計算並輸出每對相鄰元素的和。如果讀入元素個數為奇數,則提示使用者最後乙個元素沒有求和,並輸出其值。

(2)頭尾元素兩兩配對(第乙個和最後乙個, 第二個和倒數第二個, 以此類推),計算每對元素的和,並輸出。

implement

(1)計算並輸出每對相鄰元素的和。如果讀入元素個數為奇數,則提示使用者最後乙個元素沒有求和,並輸出其值。

下面是我的實現,**有問題,可以找找看:

#include 

#include

#include

#include

#include

using std::cin;

using std::cout;

using std::setw;

using std::endl;

using std::string;

using std::vector;

int main()

for (vector::size_type index=0; index!=ivec.size()-1; index+=2)

是否已經找到了錯誤呢?不行就編譯執行下就能找到錯在哪了

另,《習題解答》的程式中,還增加了判斷ivec物件是否為空

(2)頭尾元素兩兩配對(第乙個和最後乙個, 第二個和倒數第二個, 以此類推),計算每對元素的和,並輸出。

這是我的實現:

for (vector::size_type index=0; index!=ivec.size()/2; index++)

{cout<<"

ivec[

"<"

]+ivec[

"<1

<<"

]="

<1]{cout<<"

ivec[

"<<(ivec.size()-1)/2

<<"]="

<1)/2]<<"

未進行加和

"《每次迴圈都會呼叫兩次ivec.size(),還有for條件判斷的一次,所以效率比較低。下面是《習題解答》的實現,整個for迴圈只呼叫一次ivec.size(),只是增加了乙個vector::size_type變數,**如下:

for (vector::size_type first=0, last=ivec.size()-1; first"

ivec[

"<"

]+ivec[

"<"]="

{cout<<"

ivec[

"<<(ivec.size()-1)/2

<<"]="

<1)/2]<<"

未進行加和

"《效率明顯提公升是比我的實現高多啦,要寫出高效的迴圈,並實現需求所要求的邏輯,真的是不容易啊。

轉 std vector成員函式

vector成員函式 函式表述c.assign beg,end c.assign n,elem 將 beg end 區間中的資料賦值給c。將n個elem的拷貝賦值給c。c.at idx 傳回索引idx所指的資料,如果idx越界,丟擲out of range。c.back 傳回最後乙個資料,不檢查這個...

std vector插入和刪除高階

std vectorexamplevec 1.iterator erase const iterator pos 移除位於 pos的元素 注意點 1 迭代器 pos必須合法且可解引用。所以 不能以end 迭代器為 pos的值 合法,但不可解引用 不然會拋異常。比如 examplevec.erase ...

std vector與std list的效率比較

一直想知道std中vector和list的效率哪個高些。於是做了乙個簡單的測試,對std vector和list的push back與遍歷操作的效率進行比較。結果如下 1.push back操作 連續push back操作100000個元素,然後clear 一直重複10000次。vector耗時13...