c++ primer第五版(中文)習題答案 第十章第一節第一小節-概述

本博客知識記錄自己學習中的筆記或者記錄,如果有錯誤歡迎大家糾正。

本節主要大致瞭解了定義在algorithm中的算法,使用迭代器作爲範圍。

算法不能改變容器大小,切記

10.1 使用algorithm中定義好的count函數 得到vector容器中的值

代碼如下

#include <iostream>
#include <algorithm>
#include <vector>
#include "stdlib.h"
#include <string>
int main()
{
    int inputNumber = 0;
    std::vector<int> vectorIntA;
    while (std::wcin>>inputNumber )
    {
        vectorIntA.push_back(inputNumber );
    }
    //如果想要結束循環輸入 在win平臺應該同時按下 ctrl+z;
    std::cout <<std::endl<< "input need count number"<< std::endl;
    int countNumberK= 0;
    std::cin >> countNumberK;
    std::cout <<countNumberK<<" count is = "<<count(vectorIntA.cbegin(), vectorIntA.cend(),countNumberK) << std::endl;
    system("pause");
    return 0;
}

輸出結果爲
這裏寫圖片描述

10.2 讀取string序列存入到list中

#include <iostream>
#include <algorithm>
#include <list>
#include "stdlib.h"
#include <string>
int main()
{
    std::string s;
    std::list<std::string>listString;
    unsigned int stringCount = 0;
    std::cin>>stringCount;
    for (size_t i = 0; i < stringCount; i++)
    {
        std::cin >> s;
        listString.push_back(s);
    }
    std::cout << std::endl << "input need find string" << std::endl;
    std::string findString = "";
    std::cin >> findString;
    std::cout << findString << " count is = " << count(listString.begin(), listString.end(), findString) << std::endl;
    system("pause");
    return 0;
}

輸出結果爲
這裏寫圖片描述

如果有人細心發現 在上面兩個題目中使用了兩種迭代器 方式 cbegin 和begin兩種 他們的區別在於:
cbegin 相當於 const_iterator 可以用於 const 容器 和 非const容器 不能修改指向元素的值,但可以改變指向的元素。
begin 是能修改稿指向元素的值也可以修改指向的元素。

如果有人知道爲什麼不能在結束循環輸入string之後再繼續輸入string的問題歡迎留言告知我,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章