C++,vector模板类的问题? std::vector<PointT, Eigen::aligned_allocator<PointT> > points;

我的具体问题是

我看了C++ Primer Plus 的书
模板类实例化的格式一般是
vector<数据类型> 名称 ;
但是std::vector<PointT(数据类型1), Eigen::aligned_allocator<PointT>(数据类型2) > points;
这个语句明显有两个数据类型了。
请问一下
到底是怎么回事?

实际上模板和函数一样,是可以有默认参数的,std::vector的声明是

template<
    class T,
    class Allocator = std::allocator<T>
> class vector;

有两个模板参数,T 是元素类型,而 Allocator 负责提供 vector 需要用到的动态内存。其中 Allocator 参数有默认值,一般的使用不需要指定这个参数。但有时对内存有特殊需求,就需要提供自己定义的内存管理类。


把容器操作和内存管理分开,这是STL的一个亮点,你在设计容器时也可以学习

温馨提示:内容为网友见解,仅供参考
无其他回答

C++,vector模板类的问题? std::vector<PointT, Eigen::aligned_allocator...
实际上模板和函数一样,是可以有默认参数的,std::vector的声明是 template< class T, class Allocator = std::allocator<T>> class vector;有两个模板参数,T 是元素类型,而 Allocator 负责提供 vector 需要用到的动态内存。其中 Allocator 参数有默认值,一般的使用不需要指定这个参数。但有...

c++错误 is not a member of vector
你定义一个Vector类,disordered也是这个类的成员函数,你在main函数里使用是vector,disordered不是vector的成员函数,所以报错

C++6.0编译器vector警告
是微软的库与标准库有所不兼容造成的,加上上面这行屏蔽之即可!

vector在C++里的原型是什么
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。 vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 为了可以使用vector,必须在你的头文件中包含下面的代码: #includ...

c++中容器是什么概念啊?
容器:能够操作多种数据结构和算法的模板类和函数库。能够像现实中的容器一样存放各种类型的对象,一个容器中的所有对象必须是同一个类型的。容器的类型:vector(向量)、list(列表)、deque(双队列)、set(集合)、map(映射)、multiset(多重集合)、stack(栈)、queue(队列)、priority_queue(...

c语言里可以用vector吗?
1、C语言不能用vector,C标准库没提供vector的功能,可以自己写。2、vector是C++ stl当中的容器。vector容器类型 vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。vector的构造 函数原型:template<typename T>...

MyTinySTL学习之内存分配器:allocator.h(二)
例如vector的iterator就是C++内置指针,即它是一个non-class iterator,所以它没有能力定义自己的5个associated type,这时候它是如何回答算法的问题的呢?这里提前了解一下iterator_traits。在为一个容器定义Iterator class时,该Iterator class中必须提供5种associated type(定义格式如下),用于回答算法的...

openmVG库怎么用?
typedef std::vector<FeatureT, Eigen::aligned_allocator<FeatureT>> FeatsT;\/\/其它类似的地方都要改,包括返回vector的函数,最好也加上 EIGEN_MAKE_ALIGNED_OPERATOR_NEW#1. 核心库#1.1 图像#Image ContaineropenMVG提供一个基本的类用作图像容器:Image<T>,T代表像素类型,这个类可以处理灰度,RGB,RGBA或者自定义...

C++标准库,标准程序库,标准模板库之间是什么关系
STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的代码从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器),几乎所有的代码都采用了模板类和模版函数的方式,这...

UE4模板类和STL对比
TStringView与std::string_view等效,TArrayView与std::span(C++ 20)等效,提供了更高效、更安全的字符串和数组访问。TEnableIf类似于std::enable_if,用于模板条件编译。TArray动态数组与std::vector功能相似。默认分配器FDefaultAllocator实质上是TSizedHeapAllocator。IndexSize决定分配元素的容量大小,...

相似回答