C STL演算法系列6 copy函式

2021-09-06 11:39:04 字數 1898 閱讀 9968

現在我們來看看變易演算法。所謂變易演算法(mutating algorithms)就是一組能夠修改容器元素資料的模板函式,可進行序列資料的複製,變換等。

我們現在來看看第乙個變易演算法:元素複製演算法copy。該演算法主要用於容器之間元素的拷貝,即將迭代器區間[first,last)的元素複製到由複製目 標result給定的區間[result,result+(last-first))中。下面我們來看看它的函式原型:

1     template  

2outputiterator copy(

3inputiterator _first,

4inputiterator _last,

5outputiterator _destbeg

6 );

_first, _last

指出被複製的元素的區間範圍[ _first,_last).

_destbeg 

指出複製到的目標區間起始位置

返回乙個迭代器,指出已被複製元素區間的最後乙個位置

程式示例:

首先我們來乙個簡單的示例,定義乙個簡單的整形陣列myints,將其所有元素複製到容器myvector中,並將陣列向左移動一位。

1 #include 2 #include 3 #include 4

5using

namespace

std; 67

intmain ()

8;

10 vectormyvector;

11 vector::iterator it;

1213 myvector.resize(7); //

為容器myvector分配空間

1415

//copy用法一:

16//

將陣列myints中的七個元素複製到myvector容器中

17 copy ( myints, myints+7

, myvector.begin() );

1819 cout << "

myvector contains:

";

20for ( it = myvector.begin(); it != myvector.end(); ++it )

21

24 cout <2526

//copy用法二:

27//

將陣列myints中的元素向左移動一位

28 copy(myints + 1, myints + 7

, myints);

2930 cout << "

myints contains:

";

31for ( size_t i = 0; i < 7; ++i )

32

35 cout <3637

return

0;

38 }

從上例中我們看出copy演算法可以很簡單地將乙個容器裡面的元素複製至另乙個目標容器中,上例中**特別要注意一點就是myvector.resize(7);這行**,在這裡一定要先為vector分配空間,否則程式會崩,這是初學者經常犯的乙個錯誤。其實copy函式最大的威力是結合標準輸入輸出迭代器的時候,我們通過下面這個示例就可以看出它的威力了。

1 #include 2 #include 3 #include 4 #include 5 #include   67

using

namespace

std; 89

intmain ()

10

C STL演算法系列6 copy函式

現在我們來看看變易演算法。所謂變易演算法 mutating algorithms 就是一組能夠修改容器元素資料的模板函式,可進行序列資料的複製,變換等。我們現在來看看第乙個變易演算法 元素複製演算法copy。該演算法主要用於容器之間元素的拷貝,即將迭代器區間 first,last 的元素複製到由複製...

C STL演算法系列count函式

count和count if函式是計數函式,先來看一下count函式 count函式的功能是 統計容器中等於value元素的個數。先看一下函式的引數 count first,last,value first是容器的首迭代器,last是容器的末迭代器,value是詢問的元素。可能我說的不太詳細,來看乙...

C STL演算法系列1 count函式

一.count函式 algorithm標頭檔案定義了乙個count的函式,其功能類似於find。這個函式使用一對迭代器和乙個值做引數,返回這個值出現次數的統計結果。編寫程式讀取一系列int型資料,並將它們儲存到vector物件中,然後統計某個指定的值出現了多少次。核心 cout 具體實現 1 讀取一...