C++STL的vector中front()是返回第一个元素的应用吗?
vector<int>a;a.push_back(1);a.push_back(3);intb=a.front();b=2;cout<<a.at(0);那为什么这个代码输...
vector<int> a;
a.push_back(1);
a.push_back(3);
int b=a.front();
b=2;
cout<<a.at(0);
那为什么这个代码输出的不是2,对a[0]完全没有影响呢? 展开
a.push_back(1);
a.push_back(3);
int b=a.front();
b=2;
cout<<a.at(0);
那为什么这个代码输出的不是2,对a[0]完全没有影响呢? 展开
3个回答
展开全部
std::vector 的 front() 成员函数返回第一个元素的引用。对于 const 容器,返回的是 const 引用(不能修改元素的值)。
对于非空的容器a(容器的成员函数 a.empty() 返回 false),a.front() 等价于 *(a.begin()) ;对于空的容器,a.front() 的行为是未定义的,一些实现会在调试时提示 assertion fail。
除了 vector 之外,C++标准库的所有其他容器类也都提供了 front() 函数,它们的行为都是一样的。
对于非空的容器a(容器的成员函数 a.empty() 返回 false),a.front() 等价于 *(a.begin()) ;对于空的容器,a.front() 的行为是未定义的,一些实现会在调试时提示 assertion fail。
除了 vector 之外,C++标准库的所有其他容器类也都提供了 front() 函数,它们的行为都是一样的。
推荐于2018-03-01
展开全部
front()返回的的确是第一个元素的引用。
但是你定义的b并不是一个引用,操作b不会对a中的元素造成影响。
若定义
int &b=a.front();
则对b的操作会影响a中第一个元素。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int b=a.front;返回的是vector<int> 自己定义的类型,所以返回的值只是一个拷贝值,修改无效
追问
那就是说这个引用和c++里面说的引用不是一个意思吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询