STLvector

STL的一些源函数的代码,可查:

http://www.cplusplus.com

include

include

include

using namespace std;
using std::vector;
/int main()
{
int arr[] = { 1,2,3,4,5,6,7,0 };
vector vec(arr,arr+8);
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 <<
it;
}
std::cout << std::endl;
cout << “Hello world!” << endl;
return 0;
}/
int main() //using reverse
{
int arr[] = { 1,2,3,4,5,0};
vector vec(arr,arr+6);
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 <<
it;
}
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 便携式,可移植的

  1. vector empty()—true if the container size is 0, false otherwise
  2. front()/back() — return reference!
  3. push_back(reference)/pop_back() — jin chu!
  4. begin()/end() — return iterator!
  5. at(0) — access elements!
  6. f00.swap(bar);
  7. 往 set 里增加一个元素,区别在于新元素的构造上。emplace 使用直接构造,insert 使用复制构造。

std::vector myvector;
int sum (0);
myvector.push_back (100);
myvector.push_back (200);
myvector.push_back (300);
// vector::iterator it = myvector.end();
// 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’;

(っ•̀ω•́)っ✎⁾⁾ 坚持技术学习、内容输出与分享,您的支持将鼓励我继续创作!(*/ω\*)
( • ̀ω•́ )✧如有疑问或需要技术讨论,请留言或发邮件到 aclearzhang@qq.com.(*・ω< ) 
  • 本文作者:: AClearZhang
  • 本文链接:: 50.html
  • 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!