vector中的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以后它就可以指向这组对象中的下一个元素。