[c++] STL = Standard Template Library

How many people give up, because of YOU.

Continue...

先实践,最后需要总结。

1. 数据流中的数据按照一定的格式<T>提取 -------> 放在vector中。

2. 注意 vector.begin(), vector.front()的区别。

3. accumulate()求sum。(与valarrary貌似有一拼,孰优孰劣?---- 可能后者效率更高)

4. multiplies<int>()   c++ --> reference --> <functional> --> multiplies

#include<math.h>
#include<iostream>
#include<fstream>
#include<algorithm>
#include<functional>
#include<numeric>
#include<vector>
#include<iterator>

// continue...

int main() {
    std::vector<int> v;
    std::ifstream in("numbers.txt");

    //Jeff -->
    //1. Input stream --> in, 迭代器 迭代出int from stream。
    //2. Call default constructor, generate ‘eof‘.
    //3. Use back_inserter to call Container‘s member function.
    std::copy(std::istream_iterator<int>(in), std::istream_iterator<int>(),
              std::back_inserter(v));

    for (unsigned int i = 0; i < v.size(); i++)
    {
        std::cout << v[i] << std::endl;
    }

    /**************************************************************************/

    //Jeff --> sort on specific range.
    //         begin: return iterator.
    std::sort(v.begin(), v.end());
    //Jeff --> front: return &value.
    std::cout << "min/max: " << v.front() << " " << v.back() << std::endl;

    std::cout << "median: " << *(v.begin() + (v.size()/2)) << std::endl;
    std::cout << "average: " << accumulate(v.begin(), v.end(), 0.0) / v.size() << std::endl;
    std::cout << "geomean: " << std::pow( accumulate(v.begin(), v.end(), 1.0, std::multiplies<double>()), 1.0/v.size() ) << std::endl;
}

字典map(key, value)的使用。

vector获得stream的数据,然后存在map中。

copy()作为输出的技巧:输出到vector中。

int test02(void)
{
    using namespace std;
    std::vector<string> v;
    // map<key, value>
    std::map<string, int> m;

    std::ifstream in("words.txt");
    std::copy(std::istream_iterator<string>(in), std::istream_iterator<string>(),
              std::back_inserter(v));

    // The number of times it occurs in a file.
    for (auto vi = v.begin(); vi != v.end(); ++vi)
++m[*vi];

    for (auto mi = m.begin(); mi != m.end(); ++mi)
        std::cout << mi->first << ": " << mi->second << std::endl;

    return 0;
}

string也是一个contrainer。

copy()作为输入的技巧:拷贝到ostream。

int test03(void)
{
    std::vector<int> v = {1, 3, 5, 4, 3, 2};
    std::string s("string");

    std::sort(v.begin(), v.end());
    std::copy(v.begin(), v.end(),
              std::ostream_iterator<int>(std::cout, ","));
    std::cout << std::endl;

    std::sort(s.begin(), s.end());
    std::copy(s.begin(), s.end(),
              std::ostream_iterator<char>(std::cout, " "));
    std::cout << std::endl;

    return 0;
}

Next: 

In reality, not all operations are supported in all containers,

http://www.cplusplus.com/reference/stl/



需要逐个实践下,为下一节做准备

时间: 2024-10-25 22:31:00

[c++] STL = Standard Template Library的相关文章

STL(Standard Template Library)

容器(Containers) list.deque.vector.map等  算法(Algorithms)  算法作用于容器,它们提供了执行各种操作的方式.包括了对容器的初始化.排序.搜索和转化等操作  迭代器(iterators)  用于遍历元素,这些集合可能是容器也可能是容器的子集 仿函数(Function object) 仿函数又称函数对象,其实就是重载了()的struct 迭代适配器(Adaptor)   空间配置器(Allocator) 作用:1.对象的创建于销毁 2.内存的获取与释放

C++ Standard Template Library STL(undone)

目录 1. C++标准模版库(Standard Template Library STL) 2. C++ STL容器 3. C++ STL 顺序性容器 4. C++ STL 关联式容器 5. C++ STL 容器适配器 6. C++ STL算法 7. C++ STL边界限制 1. C++标准模版库(STL) STL就是Standard Template Library,标准模板库.从根本上说 1. STL是一些"容器"集合 2. STL也是算法和其他一些组件的集合 3. 这里的&quo

C++中Standard Template Library(STL)入门简要概况

STL在C++中算是相当简洁方便的东西了,但不知为何网上的教程都非常难,给新手入门造成了非常多的困扰.在此写篇新手入门教程.阅读此文需要有一定的C/C++基础,比如你要会用C语言的数组.链表等,会用C++类并且有一定了解等等,不会的还是别看了,就算你会用STL你也会发现有各种各样的bug. 本篇只介绍STL最基础的部分,其他的调用方式等等都差不多了.本篇不会讲解太多,具体需要自己去研究进入正题 (1) vector 很神奇的一个词汇,翻译成汉语是"向量",其实,这就是一个C++类,用于

&lt;Standard Template Library&gt;标准模板库专项复习总结(二)

4.队列 先进先出(FIFO)表 头文件:#include<queue> 变量的定义:queue<TYPE>queueName 成员函数: bool empty() 空队列返回true,否则返回false void pop() 删除队列的元素 void push(const TYPE&) 插入新元素 TYPE& size() 返回元素数目 TYPE& front() 返回第一个元素的数值 5.优先队列 在队列的基础上,免费给排顺序 头文件:#include&

图文安装Windows Template Library - WTL Version 9.0

从http://wtl.sourceforge.net/下载 WTL 9.0,或者点此链接下载:WTL90_4140_Final.zip,然后解压到你的VC目录下面, 我的地址是:C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\WTL,你可以换成你的vc目录地址 解压后的目录结构如下: 然后打开 APPWiz目录,双击setup.js 然后一路OK就可以了. 接着就可以在VS里面直接用向导方式新建WTL项目了,编译报错:找不到文件at

django升级2.1python升级3.7时出现的错误:&quot;trying to load &#39;%s&#39;: %s&quot; % (entry[1], e) django.template.library.InvalidTemplateLibrary:

django升级2.1python升级3.7时出现如下的错误: "trying to load '%s': %s" % (entry[1], e) django.template.library.InvalidTemplateLibrary: Invalid template library specified. ImportError raised when trying to load 'crispy_forms.templatetags.crispy_forms_utils':

C++标准模板库Stand Template Library(STL)简介与STL string类

参考<21天学通C++>第15和16章节,在对宏和模板学习之后,开启对C++实现的标准模板类STL进行简介,同时介绍简单的string类.虽然前面对于vector.deque.list等进行过学习和总结,但并没有一个宏观上的把握,现在通过上一篇和这一篇博文,将对C++模板以及基于C++模板的STL关联起来,形成一个总体的把握,对于掌握C++中模板(template)这一强有力的工具会十分有帮助.本文的主要内容有: (1) STL容器: (2) STL迭代器: (3) STL算法: (4) ST

javaEE(6)_自定义标签&amp;JSTL标签(JSP Standard Tag Library)

一.自定义标签简介 1.自定义标签主要用于移除Jsp页面中的java代码,jsp禁止出现一行java脚本. 2.使用自定义标签移除jsp页面中的java代码,只需要完成以下两个步骤: •编写一个实现Tag接口的Java类(标签处理器类). •编写标签库描述符(tld)文件,在tld文件中对标签处理器类进行描述. 3.快速入门:使用标签输出客户机IP //java类 public class ViewPortTag extends TagSupport{ @Override public int

JSP 标准标签库(JSTL)(JSP Standard Tag Library)

[1] JSTL简介    > JSTL是JSP的标准标签库    > JSTL为我们提供了一些常用的标签,供我们日常开发使用(if . if...else .遍历 . 日期格式化) > 标签库    - core :核心标签库    - 最常用的一个标签库,也就是我们熟悉c标签. - fn :函数标签库    - 函数标签库它需要结合EL表达式使用,主要定义了一些字符串操作的方法. - fmt :格式化标签库    - 主要用来做日期.数字的格式化以及国际化    - 20151019