: | : | :期货量化学习 | :期货量化 |
返回列表 发帖

C++基础知识【C++ STL 教程】

C++基础知识【C++ STL 教程】

C++ 标准模板库(Standard Template Library,STL)是一套功能强大的 C++ 模板类和函数的集合,它提供了一系列通用的、可复用的算法和数据结构。

STL 的设计基于泛型编程,这意味着使用模板可以编写出独立于任何特定数据类型的代码。

STL 分为多个组件,包括容器(Containers)、迭代器(Iterators)、算法(Algorithms)、函数对象(Function Objects)和适配器(Adapters)等。

使用 STL 的好处:

    代码复用:STL 提供了大量的通用数据结构和算法,可以减少重复编写代码的工作。
    性能优化:STL 中的算法和数据结构都经过了优化,以提供最佳的性能。
    泛型编程:使用模板,STL 支持泛型编程,使得算法和数据结构可以适用于任何数据类型。
    易于维护:STL 的设计使得代码更加模块化,易于阅读和维护。

C++ 标准模板库的核心包括以下重要组件组件:


论坛官方微信、群(期货热点、量化探讨、开户与绑定实盘)
 
期货论坛 - 版权/免责声明   1.本站发布源码(包括函数、指标、策略等)均属开放源码,用意在于让使用者学习程序化语法撰写,使用者可以任意修改语法內容并调整参数。仅限用于个人学习使用,请勿转载、滥用,严禁私自连接实盘账户交易
  2.本站发布资讯(包括文章、视频、历史记录、教材、评论、资讯、交易方案等)均系转载自网络主流媒体,内容仅为作者当日个人观点,本网转载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。本网不对该类信息或数据做任何保证。不对您构成任何投资建议,不能依靠信息而取代自身独立判断,不对因使用本篇文章所诉信息或观点等导致的损失承担任何责任。
  3.本站发布资源(包括书籍、杂志、文档、软件等)均从互联网搜索而来,仅供个人免费交流学习,不可用作商业用途,本站不对显示的内容承担任何责任。请在下载后24小时内删除。如果喜欢,请购买正版,谢谢合作!
  4.龙听期货论坛原创文章属本网版权作品,转载须注明来源“龙听期货论坛”,违者本网将保留追究其相关法律责任的权力。本论坛除发布原创文章外,亦致力于优秀财经文章的交流分享,部分文章推送时若未能及时与原作者取得联系并涉及版权问题时,请及时联系删除。联系方式:http://www.qhlt.cn/thread-262-1-1.html
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

容器

容器是用来存储数据的序列,它们提供了不同的存储方式和访问模式。

STL 中的容器可以分为三类:

1、序列容器:存储元素的序列,允许双向遍历。

    std::vector:动态数组,支持快速随机访问。
    std::deque:双端队列,支持快速插入和删除。
    std::list:链表,支持快速插入和删除,但不支持随机访问。

2、关联容器:存储键值对,每个元素都有一个键(key)和一个值(value),并且通过键来组织元素。

    std::set:集合,不允许重复元素。
    std::multiset:多重集合,允许多个元素具有相同的键。
    std::map:映射,每个键映射到一个值。
    std::multimap:多重映射,允许多个键映射到相同的值。

3、无序容器(C++11 引入):哈希表,支持快速的查找、插入和删除。

    std::unordered_set:无序集合。
    std::unordered_multiset:无序多重集合。
    std::unordered_map:无序映射。
    std::unordered_multimap:无序多重映射。

下面的程序演示了向量容器(一个 C++ 标准的模板),它与数组十分相似,唯一不同的是,向量在需要扩展大小的时候,会自动处理它自己的存储需求:

实例
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;

  4. int main()
  5. {
  6.    // 创建一个向量存储 int
  7.    vector<int> vec;
  8.    int i;

  9.    // 显示 vec 的原始大小
  10.    cout << "vector size = " << vec.size() << endl;

  11.    // 推入 5 个值到向量中
  12.    for(i = 0; i < 5; i++){
  13.       vec.push_back(i);
  14.    }

  15.    // 显示 vec 扩展后的大小
  16.    cout << "extended vector size = " << vec.size() << endl;

  17.    // 访问向量中的 5 个值
  18.    for(i = 0; i < 5; i++){
  19.       cout << "value of vec [" << i << "] = " << vec[i] << endl;
  20.    }

  21.    // 使用迭代器 iterator 访问值
  22.    vector<int>::iterator v = vec.begin();
  23.    while( v != vec.end()) {
  24.       cout << "value of v = " << *v << endl;
  25.       v++;
  26.    }

  27.    return 0;
  28. }
复制代码
当上面的代码被编译和执行时,它会产生下列结果:
  1. vector size = 0
  2. extended vector size = 5
  3. value of vec [0] = 0
  4. value of vec [1] = 1
  5. value of vec [2] = 2
  6. value of vec [3] = 3
  7. value of vec [4] = 4
  8. value of v = 0
  9. value of v = 1
  10. value of v = 2
  11. value of v = 3
  12. value of v = 4
复制代码
关于上面实例中所使用的各种函数,有几点要注意:

    push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
    size( ) 函数显示向量的大小。
    begin( ) 函数返回一个指向向量开头的迭代器。
    end( ) 函数返回一个指向向量末尾的迭代器。

STL 是 C++ 编程中不可或缺的一部分,它极大地扩展了 C++ 的功能,使得程序员能够编写出更加高效、可读性更强的代码。

掌握 STL 的使用对于任何 C++ 程序员来说都是非常重要的。
如何访问权限为100/255贴子:/thread-37840-1-1.html;注册后仍无法回复:/thread-23-1-1.html;微信/QQ群:/thread-262-1-1.html;网盘链接失效解决办法:/thread-93307-1-1.html

TOP

返回列表