[GeekBand][STL與泛型編程]第一周作業

1. 運行結果

==============================
1.
0 10 20 30 1 0
==============================
2.
        num.push_back(1);
        num.push_back(2);
Sum = 64
==============================
3.
Middle:20 10
==============================
4.
1 30 20 10 1 2
==============================
請按任意鍵繼續. . .

2. 源代碼

#include <iostream>
#include <numeric>
#include <iterator>
#include <algorithm>
#include <functional>
#include <list>
#include <vector>
#include <string>

const std::string Cut_off = "==============================\n";

int main()
{
    std::cout << Cut_off << "1.\n";
    std::list<int> num{ 0,1,30,20,10,0 };
    for (std::list<int>::reverse_iterator tmp = num.rbegin();tmp!=num.rend();++tmp)
        std::cout << *tmp << " ";
    std::cout << std::endl;

    std::cout << Cut_off << "2.\n";
    num.push_back(1);
    num.push_back(2);
    std::cout << R"(    num.push_back(1);
    num.push_back(2);
Sum = )" << accumulate(num.begin(), num.end(), 0) << std::endl;

    std::cout << Cut_off << "3.\n";
    if (num.size() % 2)
    {
        std::list<int>::iterator tmp = num.begin();
        std::advance(tmp, num.size() / 2);
        std::cout << *tmp << std::endl;
    } 
    else
    {
        std::list<int>::iterator tmp = num.begin();
        std::advance(tmp, num.size() / 2 - 1);
        std::cout << "Middle:" << *tmp << " ";
        std::cout << *(++tmp) << std::endl;
    }

    std::cout << Cut_off << "4.\n";
    std::vector<int> vec;
    copy_if(num.begin(), num.end(), back_inserter(vec),
        std::bind1st(std::not_equal_to<int>(), 0));         // 抱大腿學來的,別打我
    for (int i : vec)
        std::cout << i << " ";
    std::cout << std::endl;

    std::cout << Cut_off;
    system("pause");
    return 0;
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容