瑞博拜恩迪特 level
获赞
146
粉丝
9
关注
8
看过 TA
7
中国科学技术大学
2019
C++
IP属地:北京
暂未填写个人简介
私信
关注
2017-09-28 09:11
已编辑
中国科学技术大学 C++
0 点赞 评论 收藏
分享
2017-08-28 21:54
中国科学技术大学 C++
1ping 2static的作用(对于非成员函数和非成员变量) static函数与普通函数的区别: 用static修饰的函数,本限定在本源码文件中,不能被本源码文件以外的代码文件调用。而普通的函数,默认是extern的,也就是说,可以被其它代码文件调用该函数。 在函数的返回类型前加上关键字static,函数就被定义成为静态函数。普通 函数的定义和声明默认情况下是extern的,但静态函数只是在声明他的文件当中可见,不能被其他文件所用。因此定义静态函数有以下好处: <1> 其他文件中可以定义相同名字的函数,不会发生冲突。 <2&gt...
浮生一梦暗若痴:我看的vector存储的是start\ end \end_of_storage三个指针,分别代表存储空间的开头,结尾和已使用的部分。push_back如下,先判断空间是否足够,足够的话,直接调用allocator的构造函数进行构造。 void push_back(const value_type& __x) { if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage) { _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,__x); ++this->_M_impl._M_finish; } 追踪_Alloc_traits到下面者一句。 typedef __gnu_cxx::__alloc_traits<_Tp_alloc_type> _Alloc_traits; 去看下construct函数的行为 // uses placement-new to construct an object of type _Tp at location __p from the arguments __args... static void std::allocator_traits< _Alloc >::construct ( _Alloc & __a, //一个allocator _Tp * __p, //要将对象构造再哪个位置,placement new的参数 _Args &&... __args //用于构造的参数 ) 回到之前push_back函数中的调用 _Alloc_traits::construct(this->_M_impl, this->_M_impl._M_finish,__x); ++this->_M_impl._M_finish; 第一个参数为allocator、第二个为finish指针,其实就是end_of_storage,第三个为push_back传进来的参数。按照construct的行为,会 把对像构造在finish指针的位置,也就是说vector中存的是对象,不是指针
投递阿里云等公司10个岗位 >
0 点赞 评论 收藏
分享
2017-08-23 14:58
已编辑
中国科学技术大学 C++
0 点赞 评论 收藏
分享
2017-06-29 16:42
中国科学技术大学 C++
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务