day38-c++类库

day38-c++类库

一、STL简介

标准模板库 STL(Standard Template Library),是 C++ 标准库的一部分,不需要单独安装,只需要#include 头文件。

STL六大部件:

  • 容器(Containers)
  • 分配器(Allocators)
  • 算法(Algorithm)
  • 迭代器(Iterators)
  • 适配器(Adapters)
  • 仿函数(Functors)

库类函数很多,这里就只拿vector进行演示,更多的函数请查询相关库。

二、vector

vector(矢量),是一种「变长数组」,即“自动改变数组长度的数组”。

值得一提的是,vector可以用来以邻接表的方式储存图,非常友好,非常简洁。

要使用vector,需要添加头文件:#include <vector>

  1. vector的定义
1
2
3
4
5
6
7
8
9
vector<类型名> 变量名;
vector<int> array[SZIE]; //二维变长数组

如:
vector<int> name;
vector<double> name;
vector<char> name;
vector<struct node> name;
vector<vector<int> > name;//注意:> >之间要加空格
  1. vector容器内元素的访问
  • 通过下标访问:

    1
    2
    3
    4
    5
    6
      int main(){
    vector<int> vi;
    vi.push_back(1);
    cout<<vi[0]<<endl;
    return 0;
    }
  • 通过迭代器访问:
    迭代器(iterator)可以理解为指针:

1
vector<类型名>::iterator 变量名;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int main(){
vector<int> v;
for (int i = 0; i < 5; i++)
{
v.push_back(i);
}
//v.begin()返回v的首元素地址
vector<int>::iterator it=v.begin();
for (int i = 0; i < v.size(); i++)
{
cout<<it[i]<<" "; //it[i]也可以写成it.at(i)
}
return 0;
}

以下是一些常见的与std::vector相关的函数及其参数:

  1. push_back(const T& value): 在vector的末尾添加一个值为value的元素。
  2. pop_back(): 删除vector的末尾元素。
  3. size() const: 返回vector中元素的个数。
  4. empty() const: 检查vector是否为空,如果为空则返回true,否则返回false。
  5. clear(): 清空vector,删除所有元素。
  6. insert(iterator position, const T& value): 在迭代器position指定的位置插入一个值为value的元素。
  7. erase(iterator position): 删除迭代器position指定位置的元素。
  8. resize(size_type count): 调整vector的大小为count,可以增加或减少元素的个数。
  9. reserve(size_type count): 设置vector的容量为至少count,即预留一定的空间。
  10. at(size_type pos): 访问索引为pos的元素,返回引用。
  11. front() const: 返回vector的第一个元素的引用。
  12. back() const: 返回vector的最后一个元素的引用。
  13. begin(): 返回指向vector第一个元素的迭代器。
  14. end(): 返回指向vector末尾(最后一个元素的下一个位置)的迭代器。

三、其它类库

  • Boost: Boost库几乎是标准库的扩展,提供了许多有用的和高效的特性,例如智能指针、正则表达式处理、图形算法等。

    1
    2
    #include <boost/shared_ptr.hpp>
    boost::shared_ptr<int> ptr(new int(2));
  • Qt: Qt是一个跨平台的C++图形用户界面应用程序开发框架。也可以用于开发非GUI程序,如命令行工具和服务器。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <QApplication>
    #include <QLabel>

    int main(int argc, char **argv) {
    QApplication app(argc, argv);
    QLabel label("Hello, world!");
    label.show();
    return app.exec();
    }
  • OpenCV: OpenCV是一个专门用于计算机视觉的库,提供了许多图像处理和计算机视觉的算法。

    1
    2
    3
    4
    5
    6
    7
    8
    #include <opencv2/opencv.hpp>

    int main() {
    cv::Mat img = cv::imread("image.jpg", cv::IMREAD_COLOR);
    cv::imshow("image", img);
    cv::waitKey(0);
    return 0;
    }
  • Eigen: Eigen是一个高级的C++库,用于线性代数,矩阵和向量操作,数值分析和数学符号计算。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    #include <Eigen/Dense>

    int main() {
    Eigen::MatrixXd m(2,2);
    m(0,0) = 3;
    m(1,0) = 2.5;
    m(0,1) = -1;
    m(1,1) = m(1,0) + m(0,1);
    }
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2024 nakano-mahiro
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信