首页 > 代码库 > C++中出现的计算机术语4
C++中出现的计算机术语4
adaptor(适配器)
一种标准库类型、函数或迭代器,使某种标准库类型、函数或迭代器的行为类似于另外一种标准库类型、函数或迭代器。系统提供了三种顺序容器适配器:stack(栈)、queue(队列)以及priority_queue(优先级队列)。所有的适配器都会在其基础顺序容器上定义一个新接口。
begin(begin 操作)
一种容器操作。如果容器中有元素,该操作返回指向容器中第一个元素的迭代器;如果容器为空,则返回超出末端迭代器。
container(容器)
一种存储给定类型对象集合的类型。所有标准库容器类型都是模板类型。定义容器时,必须指定在该容器中存储的元素是什么类型。标准库容器具有可变的长度。
deque(双端队列)
一种顺序容器。deque中存储的元素通过其下标位置访问。该容器类型在很多方面与vector 一样,唯一的不同是deque 类型支持在容器首部快速地插入新元素,就像在尾部插入一样,而且无论在容器的哪一端插入或删除都不会引起元素的重新定位。
end(end 操作)
一种容器操作,返回指向容器的超出末端的下一位置的迭代器。
invalidated iterator(无效迭代器)
指向不再存在的元素的迭代器。无效迭代器的使用未定义,可能会导致严重的运行时错误。
iterator(迭代器)
一种类型,其操作支持遍历和检查容器元素的操作。所有标准库容器都定义了表9.5 列出的4 种迭代器,与之共同工作。标准库迭代器都支持解引用(*)操作符和箭头(->)操作符,用于检查迭代器指向的元素值。它们还支持前置和后置的自增(++)、自减操作符(--),以及相等(==)和不等(!=)操作符。
iterator range(迭代器范围)
由一对迭代器标记的一段元素范围。第一个迭代器指向序列中的第一个元素,而第二个迭代器则指向该范围中的最后一个元素的下一位置。如果这段范围为空,则这两个迭代器相等(反之亦然——如果这两个迭代器相等,则它们标记一个空范围)。如果这段范围非空,则对第一个空范围)。如465果这段范围非空,则对第一个迭代器重复做自增运算,必然能达第二个迭代器。通过这个对迭代器进行自增的过程,即可处理该序列中所有的元素。
left-inclusiveinterval(左闭合区间)
一段包含第一个元素但不包含最后一个元素的范围。一般表示为[i, j),意味着该序列从i 开始(包括i)一直到j,但不包含j。
list(列表)
一种顺序容器。list中的元素只能顺序访问——从给定元素开始,要获取另一个元素,则必须通过自增或自减迭代器的操作遍历这两个元素之间的所有元素。list容器支持在容器的任何位置实现快速插入(或删除)运算。新元素的插入不会影响list 中的其他元素。插入元素时,迭代器保持有效;删除元素时,只有指向该元素的迭代器失效。
priority_queue(优先级队列)
一种顺序容器适配器。在这种队列中,新元素不是在队列尾部插入,而是根据指定的优先级级别插入。默认情况下,元素的优先级由元素类型的小于操作符决定。
queue(队列)
一种顺序容器适配器。在这种队列中,保证只在队尾插入新元素,而且只在队首删除元素。
sequential container(顺序容器)
以有序集合的方式存储单一类型对象的类型。顺序容器中的元素可通过下标访问。
stack(栈)
一种顺序容器适配器,这种类型只能在一端插入和删除元素。
vector(向量)
一种顺序容器。vector中的元素通过其位置下标访问。可通过调用push_back 或insert 函数在vector 中添加元素。在vector 中添加元素可能会导致重新为容器分配内存空间,也可能会使所有的迭代器失效。在vector 容器中间添加(或删除)元素将使所有指向插入(或删除)点后面的元素的迭代器失效。
associative array(关联数组)
由键而不是位置来索引元素的数组。通常描述为:此类数组将键映射到其关联的值上。
associative container(关联容器)
存储对象集合的类型,支持通过键的高效查询。
key_type
关联容器定义的类型,表示该容器在存储或读取值时所使用的键的类型。对于map 容器,key_type是用于索引该容器的类型。对于set 容器,key_type与value_type 相同。
map
定义关联数组的关联容器类型。与vector 容器一样,map也是类模板。但是,map容器定义了两种类型:键类型及其关联的值类型。在map 中,每个键只能出现一次,并关联某一具体的值。对map 容器的迭代器进行解引用将获得一个pair 对象,该对象存储了一个const 键和它所关联的值。
mapped_type
map 或multimap 容器定义的类型,表示在map 容器中存储的值的类型。
multimap
类似map 的关联容器。在multimap 容器中,一个键可以出现多次。
multiset
只存储键的关联容器类型。在multiset 容器中,一个键可以出现多次。
pair
一种类型,有两个public 数据成员,分别名为first 和second。pair类型是带有两个类型形参的模板类型,它的类型形参用作数据成员的类型。
set
只存储键的关联容器。在set 容器中,一个键只能出现一次。
strict weak ordering(严格弱排序)
关联容器所使用的键之间的比较关系。在这种关系下,任意两个元素都可比较,并能确定两者之间谁比谁小。如果两个值都不比对方小,则这两个值相等.
value_type
存储在容器中的元素的类型。对于set 和multiset 容器,value_type与key_type 相同。而对于map 和multimap 容器,该类型为pair 类型,
它的first 成员是const key_type 类型,second成员则是 mapped_type 类型。
* operator(解引用操作符)
用于map、set、multimap或multiset 迭代器时,解引用操作符将生成一个value_type 类型的值。注意,对于map 和multimap 容器,value_type是pair 类型。
[] operator(下标操作符)
下标操作符。对map 容器使用下标操作符时,[]中的索引必须是 key_type 类型(或者是可以转换为key_type 的类型)的值;该运算生成mapped_type 类型的值。
back_inserter
形参为指向容器的引用的迭代器适配器,生成使用push_back 为指定容器添加元素的插入迭代器。
bidirectionaliterator(双向迭代器)
除了提供前向迭代器相同的操作之外,还支持使用——操作符向后遍历序列。
forward iterator(前向迭代器)
可读写元素的迭代器,但不支持——操作符。
front_inserter
一种迭代器适配器,生成使用push_front 在指定容器的开始位置添加新元素的插入迭代器。
generic algorithms(泛型算法)
与类型无关的算法。
input iterator(输入迭代器)
只能读不能写元素的迭代器。
insert iterator(插入迭代器)
使用容器操作插入元素而不是覆写元素的迭代器。给插入迭代器赋值,等效于将具有所赋值的新元素插入到序列中。
inserter(插入器)
一种迭代器适配器,形参为一个迭代器和一个指向容器的引用,生成使用insert 为容器添加元素的插入迭代器,新元素插入在该适配器的迭代器形参所指向的元素前面。
istream_iterator
读输入流的流迭代器。
iterator categories(迭代器种类)
基于迭代器所支持的操作,在概念上对迭代器进行分类。迭代器种类形成了一个层次结构,功能较强的迭代器种类提供比它弱的迭代器的所有操作。
算法使用迭代器种类来指定它的迭代器实参必须支持什么操作。只要迭代器至少提供这个层次的操作,就可以用于该算法。例如,一些算法只要求输入迭代器,
则可以使用除了输出迭代器之外的任意迭代器调用这样的算法。而要求使用随机访问迭代器的算法只能用在支持随机访问运算的迭代器上。
off-the-end iterator(超出末端迭代器)
一种迭代器,用于标记序列中一个元素范围的结束位置。超出末端迭代器用作结束遍历的“哨兵”,指向范围内最后一个元素的下一位置。
超出末端迭代器可能指向不存在的元素,因此永远不能做解引用运算。
ostream_iterator
写输出流的迭代器。
output iterator(输出迭代器)
只能写不能读元素的迭代器。写输出流的迭代器。
output iterator(输出迭代器)
只能写不能读元素的迭代器。
predicate(谓词)
其返回类型可转换为bool 值的函数。通常被泛型算法用于检查元素。标准库所使用的谓词函数不是一元(需要一个实参)的就是二元的(需要两个实参)。
random-accessiterator(随机访问迭代器)
除了支持双向迭代器相同的操作之外,还提供了使用关系运算比较迭代器值的能力,以及在迭代器上做算术运算的能力。因此,这类迭代器支持随机访问元素。
reverse iterator(反向迭代器)
向后遍历序列的迭代器。这些迭代器颠倒了++ 和-- 的含义。
stream iterator(流迭代器)
可与流绑定在一起的迭代器。
abstract data type(抽象数据类型)
使用封装来隐藏其实现的数据结构,允许使用类型的程序员抽象地考虑该类型做什么,而不是具体地考虑类型如何表示。C++中的类可用来定义抽象数据类型。
access label(访问标号)
public 或private 标号,指定后面的成员可以被类的使用者访问或者只能被类的友元和成员访问。每个标号为在该标号到下一个标号之间声明的成员设置访问保护。标号可以在类中出现多次。
class(类)
是C++ 中定义抽象数据类型的一种机制,可以有数据、函数或类型成员。一个类定义了新的类型和新的作用域。
class declaration(类声明)
类可以在定义之前声明。类声明用关键字class(或struct)表示,后面加类名字和一个分号。已声明但没有定义的类是一个不完全的类型。
class keyword(class 关键字)
用在class 关键字定义的类中,初始的隐式访问标号是private。
class scope(类作用域)
每个类定义一个作用域。类作用域比其他作用域复杂得多——在类的定义体内定义的成员函数可以使用出现在该定义之后的名字。
concrete class(具体类)
暴露其实现细节的类。
const member function(常量成员函数)
一种成员函数,不能改变对象的普通(即,既不是static 也不是mutable)数据成员。const成员中的this 指针指向const 对象。成员函数是否可以被重载取决于该函数是否为const。
constructorinitializer list(构造函数初始化列表)
指定类的数据成员的初始值。在构造函数体现执行前,用初始化列表中指定的值初始化成员。没有在初始化列表中初始化的类成员,使用它们的默认构造函数隐式初始化。
conversionconstructor(转换构造函数)
可用单个实参调用的非explicit 构造函数。隐式使用转换构造函数将实参的类型转换为类类型。
data abstraction(数据抽象)
注重类型接口的编程技术。数据抽象允许程序员忽略类型如何表示的细节,而只考虑该类型可以执行的操作。数据抽象是面向对象编程和泛型编程的基础。
default constructor(默认构造函数)
没有指定初始化时使用的构造函数。
encapsulation(封装)
实现与接口的分离。封闭隐藏了类型的实现细节。在C++ 中,实施封装可以阻止普通用户访问类的private 部分。
explicit constructor(显式构造函数)
可以用单个实参调用但不能用于执行隐式转换的构造函数。通过将关键字explicit 放在构造函数的声明之前而将其设置为explicit。
forward declaration(前向声明)
对尚未定义的名字的声明。大多用于引用出现在类定义之前的类声明。参见不完全类型。
friend(友元)
类授权访问其非public 成员的机制。类和函数都可以被指定为友元。友元拥有与成员一样的访问权。
incomplete type(不完全类型)
已声明但未定义的类型。不能使用不完全类型来定义变量或类成员。定义指向不完全类型的引用或指针是合法的。
member function(成员函数)
类的函数成员。普通成员函数通过隐式的this 指针绑定到类类型的对象。static成员函数不与对象绑定且没有this 指针。成员函数可以被
重载,只要该函数的版本可由形参的数目或类型来区别。
mutable data member(可变数据成员)
一种永远也不能为const 对象的数据成员,即使作为const 对象的成员,也不能为const 对象。mutable成员可以在const 函数中改变。
name lookup(名字查找)
将名字的使用与其相应的声明相匹配的过程。
private members(私有成员)
在private 访问标号之后定义的成员,只能被友元和其他的类成员访问。类所使用的数据成员和实用函数在不作为类型接口的组成部分时,通常声明为private。
public members(公用成员)
在public 访问标号之后定义的成员,可被类的任意使用者访问。一般而言,只有定义类接口的函数应定义在public 部分。
static member(静态成员)
不是任意对象的组成部分、但由给定类的全体对象所共享的数据或函数成员。
struct keyword(struct 关键字)
用在struct 关键字定义的类中,初始的隐式访问标号为public。
synthesized default constructor(合成的默认构造函数)
编译器为没有定义任何构造函数的类创建(合成)的构造函数。这个构造函数通过运行该类的默认构造函数来初始化类类型的成员,内置类型的成员不进行初始化。