stl新手練習 迭代器的運用 醜數

2021-09-10 22:49:48 字數 1311 閱讀 1371

ugly numbers are numbers whose only prime factors are 2, 3 or 5. the sequence 1, 2, 3, 4, 5, 6, 8, 9, 10, 12, 15, ... shows the first 11 ugly numbers. by convention, 1 is included. write a program to find and print the 1500』th ugly number.

input

there is no input to this program.

output

output should consist of a single line as shown below, with 『』 replaced by the number computed.

sample output

the 1500'th ugly number is .

這道題可以用到set,因為set本身具備乙個排序的作用,且可以達到去重的效果,這裡主要還是迭代器的運用,迭代器是一種可以連線容器與演算法的渠道,相當於一種特別的指標,指向容器中的元素,並代表其元素進入演算法當中。

其定義為

容器名《資料型別》::iterator    取名;
例如這道題用到的例子,就是set::iterator   iter; 就是這樣。

常規的用法是:比如用set定義:seta;一般我們會把iter=a.begin();這樣把首位址賦予給iter迭代器。此時如果set已經賦予n個元素,這時iter對應第乙個元素,如果iter++;或++iter;或--iter,iter--是讓iter對應下乙個(上乙個)元素;++iter後其對應的就是容器當中的第二個元素了。而輸出需要一定的格式,如果要輸出對應的元素以及運算對應的元素我們要用到的是*iter;

還有一種是iter->l;是指iter指向元素中為l的元素,等效於(*iter).l;

附**:

#include

#include

#include

#include

using namespace std;

sets;

int main()

;set::iterator iter;

s.insert(1);         //現將s賦乙個值1

while(a<=10000)        //這裡是用於擴充套件set中的元素,a不能過小,因為我們要求第1500個,如果只要1500個數可能得到的比其大,或比其小,因為他是乙個個元素挨個乘2.3.5的,可能沒有運算要的結果的時候就已經到達1500個數,所以要將a設立的大一點

STL迭代器失效的問題

內部資料結構 連續儲存,例如陣列。隨機訪問每個元素,所需要的時間為常量。在末尾增加或刪除元素所需時間與元素數目無關,在中間或開頭增加或刪除元素所需時間隨元素數目呈線性變化。可動態增加或減少元素,記憶體管理自動完成,但程式設計師可以使用reserve 成員函式來管理記憶體。迭代器失效 插入 vecto...

STL中的迭代器分類

五類迭代器如下 1 輸入迭代器 唯讀,一次傳遞 為輸入迭代器預定義實現只有istream iterator和istreambuf iterator,用於從乙個輸入流istream中讀取。乙個輸入迭代器僅能對它所選擇的每個元素進行一次解析,它們只能向前移動。乙個專門的建構函式定義了超越末尾的值。總是,...

STL游標 迭代器(itertor)的使用

摘抄自 使用前要注意加上標頭檔案 include 迭代器實際上是一種泛化指標,如果乙個迭代器指向了容器中的某一成員,那麼迭代器將可以通過自增自減來遍歷容器中的所有成員。迭代器是聯絡容器和演算法的媒介,是演算法操作容器的介面。在運用演算法操作容器的時候,我們常常在不知不覺中已經使用了迭代器。stl中定...