容器成员和函数
2025年09月26日
2.容器成员和函数
STL提供的每种容器均提供了许多操作行为和成员。作为容器的成员,必须满足三个条件:
1)元素必须是可复制的。所有容器均会产生1份元素副本,不会发生alias现象;所有容器操作行为传回的均是其元素的副本。这导致复制构造函数的执行非常频繁。
2)元素必须是可指派(assign)的。容器的成员函数以及STL的各种算法均可利用assign()函数为元素设定新值。
3)元素必须是可释放的(经过析构函数释放内存)。使用者从容器中将元素删除时,容器必须释放该元素所占的内存。按这种需求,析构函数不能被设置为private类型。
作为容器的成员函数(操作),需要具备一些共同的能力。其中最重要的能力有三个:①容器均能提供value,而非reference(引用)。涉及元素操作时,元素满足上述的三个条件。②所有元素自动形成顺序,即按此顺序可多次遍历所有元素。这些容器均包含可返回迭代器的函数,使用这些迭代器可遍历元素。这些迭代器是算法和容器的接口。③函数使用者必须确保传递的参数符合要求。否则,可能会导致未定义的行为(通常STL是不会抛出异常的)。以上均为容器中成员函数的核心竞争力。所有容器均包含部分共有的成员函数,主要包括初始化、容器大小、比较以及赋值和交换等。