STL的一些源函数的代码,可查:
include
include
include
using namespace std;
using std::vector;
/int main()
{
int arr[] = { 1,2,3,4,5,6,7,0 };
vectorvec(arr,arr+8); it;
for ( size_t i = 0; i < vec.size() ;i++ )
{ std::cout << vec[i];}
std::cout << std::endl;
for(vector::iterator it = vec.begin(); it != vec.end();++it){
std::cout <<
}
std::cout << std::endl;
cout << “Hello world!” << endl;
return 0;
}/
int main() //using reverse
{
int arr[] = { 1,2,3,4,5,0};
vectorvec(arr,arr+6); it;
for( size_t i = 0; i < vec.size();i++){
cout << vec[i];
}
cout << endl;
reverse(vec.begin(),vec.end()); //为这一行新增#include
for(vector::iterator it = vec.begin(); it != vec.end();++it){
cout <<
}
return 0;
}
/*size_t 类型定义在cstddef头文件中,该文件是C标准库的头文件stddef.h的C++版。它是一个与机器相关的unsigned类型,其大小足以保证存储内存中对象的大小。在用下标访问元素时,vector使用vector::size_type作为下标类型,而数组下标的正确类型则是size_t。vector使用的下标实际也是size_t,源码是typedef size_t size_type。
在C++中,设计 size_t 就是为了适应多个平台的 。size_t的引入增强了程序在不同平台上的可移植性。size_t是针对系统定制的一种数据类型,一般是整型,因为C/C++标准只定义一最低的位 数,而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定义这样的数据类型。一 般这种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。经测试发现,在32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。 /
//portable 便携式,可移植的
- vector empty()—true if the container size is 0, false otherwise
- front()/back() — return reference!
- push_back(reference)/pop_back() — jin chu!
- begin()/end() — return iterator!
- at(0) — access elements!
- f00.swap(bar);
- 往 set 里增加一个元素,区别在于新元素的构造上。emplace 使用直接构造,insert 使用复制构造。
std::vector
int sum (0);
myvector.push_back (100);
myvector.push_back (200);
myvector.push_back (300);
// vector
// while ( it != myvector.begin())
// {
sum += myvector.back();
myvector.pop_back();
sum += myvector.back();
myvector.pop_back();
sum += myvector.back();
// }
std::cout << “The elements of myvector add up to “ << sum << ‘\\n’;
std::cout << “The elements of myvector front element to “ << myvector.at(0) << ‘\\n’;