前言

之前看见std::vector 容器的begin()、end()、front()、back()用法,了解begin()和end(),不了解front()和back()方法,今天没事查了下博客,验证了下,留个随手笔记。

一、begin函数

函数原型:
iterator begin();
const_iterator begin();

功能:
返回一个当前vector容器中起始元素的迭代器。

二、end函数

函数原型:
iterator end();
const_iterator end();

功能:
返回一个当前vector容器中末尾元素的迭代器。

三、front函数

函数原型:
reference front();
const_reference front();

功能:
返回当前vector容器中起始元素的引用。

四、back函数

函数原型:
reference back();
const_reference back();

功能:
返回当前vector容器中末尾元素的引用。

五、测试

vector.cc 源文件:

#include <iostream>
#include <vector>
using namespace std;
int main()
{
	vector<char> v1;
	vector<char>::iterator iter1;
	vector<char>::iterator iter2;
	v1.push_back('m');
	v1.push_back('n');
	v1.push_back('o');
	v1.push_back('p');
	cout << "v1.front() = " << v1.front() << endl;
	cout << "v1.back() = " << v1.back() << endl;
	iter1 = v1.begin();
	cout << *iter1 << endl;
	iter2 = v1.end()-1;
	/**\
	* 注意v1.end()指向的是最后一个元素的下一个位置,所以访问最后一个元素的正确操作为:v1.end() - 1;
	\**/
	cout << *iter2 << endl;
	return 0;
}

CMakeLists.txt 源文件:

cmake_minimum_required(VERSION 2.8.3)
project(vector_test)
add_executable(vector vector.cc)

源文件和CMakeLists.txt 放在同一文件夹下,运行:

mkdir build
cd build
cmake ../
make
./vector

输出:

ziqi@ziqi-gloway:~/Desktop/test$ mkdir build

ziqi@ziqi-gloway:~/Desktop/test$ cd build/

ziqi@ziqi-gloway:~/Desktop/test/build$ cmake ../
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/ziqi/Desktop/test/build

ziqi@ziqi-gloway:~/Desktop/test/build$ make
Scanning dependencies of target vector
[ 50%] Building CXX object CMakeFiles/vector.dir/vector.cc.o
[100%] Linking CXX executable vector
[100%] Built target vector

ziqi@ziqi-gloway:~/Desktop/test/build$ ./vector 
v1.front() = m
v1.back() = p
m
p

参考:
胡涂胡话的博客

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐