📅  最后修改于: 2023-12-03 14:51:14.927000             🧑  作者: Mango
在C++ STL中,begin()
和end()
是迭代器中最常用的函数之一。迭代器是一种提供对序列元素的访问方式的抽象,begin()
函数返回一个迭代器,其中包含序列的第一个元素的地址,而end()
函数返回一个迭代器,其中包含序列的最后一个元素之后的地址。这两个函数在STL中几乎处处都会用到。
begin()
和end()
函数用途array
和vector
。begin()
和end()
函数来遍历参数。#include<vector>
#include<iostream>
int main(){
std::vector<int> vec{1,2,3,4,5,6};
for(auto i=vec.begin();i!=vec.end();++i){
std::cout<<*i<<' ';
}
}
输出:1 2 3 4 5 6
#include<vector>
#include<iostream>
int main(){
std::vector<int> vec{1,2,3,4,5,6};
for(auto i:vec){
std::cout<<i<<' ';
}
}
输出:1 2 3 4 5 6
#include<vector>
#include<iostream>
void func(std::vector<int> nums){
for(auto i=nums.begin();i!=nums.end();++i){
std::cout<<*i<<' ';
}
}
int main(){
std::vector<int> vec{1,2,3,4,5,6};
func(vec);
}
输出:1 2 3 4 5 6
end()
函数时,最好不要使用算术比较操作符例如<
或>
,因为指针算术比较未定义,可能会导致意外结果或未定义行为。end()
函数时,最好不要对返回的迭代器进行解引用操作,因为标记位置之后的地址其实并不存在,对其解引用会导致未定义行为。begin()
和end()
是STL中非常重要和常用的函数,旨在提供一种可移植的方法来处理多种数据结构。它们使遍历容器变得更加方便,也是从STL容器中接收参数的常用方式之一。然而,我们在使用它们时必须小心,以确保我们不会遇到任何未定义行为。