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++)<1]{cout<<"{cout<<"
ivec[
"<"
]+ivec[
"<1
<<"
]="
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...