25.说一下STL每种容器对应的迭代器
25.说一下STL每种容器对应的迭代器
容器 | 迭代器 |
---|---|
vector、deque | 随机访问迭代器 |
stack、queue、priority_queue | 无 |
list、(multi)set/map | 双向迭代器 |
unordered_(multi)set/map、forward_list | 前向迭代器 |
1.vector迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
2.deque迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
3.list迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
迭代器 | 功能 |
---|---|
iterator begin(); | 返回指向 list 首元素的迭代器 |
若 list 为空,则返回的迭代器将等于 end() | |
const_iterator begin() const; | 返回指向 list 首元素的迭代器 |
若 list 为空,则返回的迭代器将等于 end() | |
iterator end(); | 返回指向 list 末元素后一元素的迭代器 |
const_iterator end() const; | 返回指向 list 末元素后一元素的迭代器 |
reverse_iterator rbegin(); | 返回指向逆向 list 首元素的逆向迭代器 |
const_reverse_iterator rbegin() const; | 返回指向逆向 list 首元素的逆向迭代器 |
reverse_iterator rend(); | 返回指向逆向 list 末元素后一元素的逆向迭代器 |
const_reverse_iterator rend() const; | 返回指向逆向 list 末元素后一元素的逆向迭代器 |
4.set迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
5.multiset迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
函数声明 | 功能介绍 |
---|---|
iterator begin() | 返回multiset中起始位置元素的迭代器 |
iterator end() | 返回multiset中最后一个元素后面的迭代器 |
const_iterator cbegin() const | 返回multiset中起始位置元素的const迭代器 |
const_iterator cend() const | 返回multiset中最后一个元素后面的const迭代器 |
reverse_iterator rbegin() | 返回multiset中起始位置元素的反向迭代器,即rbegin |
reverse_iterator rend() | 返回multiset最后一个元素下一个位置的反向迭代器,即rend |
const_reverse_iterator crbegin() const | 返回multiset第一个元素的反向const迭代器,即cend |
const_reverse_iterator crend() const | 返回multiset最后一个元素下一个位置的反向const迭代器,即crbegin |
6.map迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
rbegin() | 返回指向向量最后一个元素的反向迭代器 |
rend() | 返回指向向量第一个元素之前位置的反向迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |
crbegin() | 返回指向向量最后一个元素的反向迭代器,不能用于修改元素 |
crend() | 返回指向向量第一个元素之前位置的反向迭代器,不能用于修改元素 |
函数声明 | 功能介绍 |
---|---|
iterator begin() | 返回multiset中起始位置元素的迭代器 |
iterator end() | 返回multiset中最后一个元素后面的迭代器 |
const_iterator cbegin() const | 返回multiset中起始位置元素的const迭代器 |
const_iterator cend() const | 返回multiset中最后一个元素后面的const迭代器 |
reverse_iterator rbegin() | 返回multiset中起始位置元素的反向迭代器,即rbegin |
reverse_iterator rend() | 返回multiset最后一个元素下一个位置的反向迭代器,即rend |
const_reverse_iterator crbegin() const | 返回multiset第一个元素的反向const迭代器,即cend |
const_reverse_iterator crend() const | 返回multiset最后一个元素下一个位置的反向const迭代器,即crbegin |
7.unordered_(multi)set迭代器
迭代器 | 功能 |
---|---|
begin() | 返回指向向量第一个元素的迭代器 |
end() | 返回指向向量最后一个元素之后位置的迭代器 |
cbegin() | 返回指向向量第一个元素的迭代器,不能用于修改元素 |
cend() | 返回指向向量最后一个元素之后位置的迭代器,不能用于修改元素 |