您的位置:首页 > 编程语言 > C语言/C++

STL中的back()&&end()||front()&&begin()辨析

2017-10-31 00:47 387 查看

vector中的back()&&end()、front()&&begin()辨析

目录

vector中的backendfrontbegin辨析
目录

back函数

end函数

back end

front函数

begin函数

小结

back()函数

reference back ( );

const_reference back ( ) const;

返回值

Returns a reference to the last element in the vector container.

返回在vector末尾元素的引用

end()函数

iterator end ();

const_iterator end () const;

返回值

Returns an iterator referring to the past-the-end element in the vector container.

返回vector尾部元素的迭代器

back() && end()

vector::back, this function returns a direct reference;vector::end, which returns an iterator just past this element(end返回的迭代器在最后一个元素的后面)。

/*
* C/C++ 语言
*
* @author Erice_s
* @date 2017/10/31
* binbin_Erices@163.com
*
*/
// vector::end
#include <iostream>
#include <vector>
using namespace std;

int main ()
{
vector<int> myvector;
for (int i=1; i<=5; i++) myvector.insert(myvector.end(),i);

cout << "myvector contains:";
vector<int>::iterator it;
for ( it=myvector.begin() ; it < myvector.end(); it++ )
cout << " " << *it;

cout << endl;

return 0;
}




front函数

reference front ( );

const_reference front ( ) const;

返回值

Returns a reference to the first element in the vector container.

begin函数

iterator begin ();

const_iterator begin () const;

返回值

Returns an iterator referring to the first element in the vector container

看一个例子

/*
* C/C++ 语言
*
* @author Erice_s
* @date 2017/10/31
* binbin_Erices@163.com
*
*/
// vector::begin front
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main()
{
vector<int> myvector;
for (int i = 1; i <= 5; i++) myvector.push_back(i);

vector<int>::iterator it;

cout << "myvector contains:";
for_each(myvector.begin(), myvector.end(), [](int a){cout << a << " "; });
//lambda表达式[函数对象参数](操作符重载函数参数)mutable或exception声明->返回值类型{函数体}

myvector.push_back(77);
myvector.push_back(16);

// now front equals 1, and back 16

myvector.front() -= myvector.back();

cout << " myvector.front() is now " << myvector.front() << endl;
cout << endl;

return 0;
}
//myvector contains: 1 2 3 4 5 myvector.front() is now -15


上面的代码是OK的,如果把myvector.front() -= myvector.back();

换成myvector.begin() -= myvector.back();效果如下:



小结

其实要分清end&&back,front&&begin很简单——end,begin返回的是一个迭代器;而back和front返回的是容器元素的引用。

迭代器:迭代器是指针的泛化

迭代器本身是一个对象,指向另一个可以被迭代的对象,用来迭代一组对象。即若迭代器指向一组对象中的某个元素,则通过increment以后它就可以指向这组对象中的下一个元素。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  stl c++ 迭代器