社区
模式及实现
帖子详情
C++类模板,救命,后天就要交了
Z左
2020-01-01 01:42:03
写了,写了一个多星期,运行通不过,这个比较难,希望路过的大佬帮帮我
各位,是时候展现自己的实力了,我没有,我先告退
...全文
176
7
打赏
收藏
C++类模板,救命,后天就要交了
写了,写了一个多星期,运行通不过,这个比较难,希望路过的大佬帮帮我 各位,是时候展现自己的实力了,我没有,我先告退
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ggglivw
2020-03-02
打赏
举报
回复
就是结构变量的operator 函数,不同成员实现一套即可.比如x,y的结构,x,y,z的结构实现,里面自己做咋个赋值改变的过程,外面的操作类流程不变
醉逍遥_祥
2020-03-02
打赏
举报
回复
看我博客,之前项目写的矩阵类,未完工,可以参考下思路:
https://blog.csdn.net/qq_35097289/article/details/91370084
EricNTH.CN
2020-02-28
打赏
举报
回复
我写的博客,你可以看看。
https://blog.csdn.net/EricNTH/article/details/104530814
yshuise
2020-02-15
打赏
举报
回复
https://github.com/steveLauwh/SGI-STL/tree/master/SGI-STL%20V3.3
yshuise
2020-02-15
打赏
举报
回复
[code=cSkip to content Why GitHub? Enterprise Explore Marketplace Pricing Search Sign in Sign up steveLauwh / SGI-STL 26540290 Code Issues 2 Pull requests 0 Actions Projects 0 Security Insights All your code in one place GitHub makes it easy to scale back on context switching. Read rendered documentation, see the history of any file, and collaborate with contributors on projects across GitHub. See pricing for teams and enterprises SGI-STL/SGI-STL V3.3/stl_vector.h @steveLauwh steveLauwh commit SGI-STL V3.3 a0300a2 on 20 Jul 2017 869 lines (766 sloc) 27.9 KB /* * * Copyright (c) 1994 * Hewlett-Packard Company * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Hewlett-Packard Company makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. * * * Copyright (c) 1996 * Silicon Graphics Computer Systems, Inc. * * Permission to use, copy, modify, distribute and sell this software * and its documentation for any purpose is hereby granted without fee, * provided that the above copyright notice appear in all copies and * that both that copyright notice and this permission notice appear * in supporting documentation. Silicon Graphics makes no * representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied warranty. */ /* NOTE: This is an internal header file, included by other STL headers. * You should not attempt to use it directly. */ #ifndef __SGI_STL_INTERNAL_VECTOR_H #define __SGI_STL_INTERNAL_VECTOR_H #include <concept_checks.h> __STL_BEGIN_NAMESPACE #if defined(__sgi) && !defined(__GNUC__) && (_MIPS_SIM != _MIPS_SIM_ABI32) #pragma set woff 1174 #pragma set woff 1375 #endif // The vector base class serves two purposes. First, its constructor // and destructor allocate (but don't initialize) storage. This makes // exception safety easier. Second, the base class encapsulates all of // the differences between SGI-style allocators and standard-conforming // allocators. #ifdef __STL_USE_STD_ALLOCATORS // Base class for ordinary allocators. template <class _Tp, class _Allocator, bool _IsStatic> class _Vector_alloc_base { public: typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type allocator_type; allocator_type get_allocator() const { return _M_data_allocator; } _Vector_alloc_base(const allocator_type& __a) : _M_data_allocator(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0) {} protected: allocator_type _M_data_allocator; _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; _Tp* _M_allocate(size_t __n) { return _M_data_allocator.allocate(__n); } void _M_deallocate(_Tp* __p, size_t __n) { if (__p) _M_data_allocator.deallocate(__p, __n); } }; // Specialization for allocators that have the property that we don't // actually have to store an allocator object. template <class _Tp, class _Allocator> class _Vector_alloc_base<_Tp, _Allocator, true> { public: typedef typename _Alloc_traits<_Tp, _Allocator>::allocator_type allocator_type; allocator_type get_allocator() const { return allocator_type(); } _Vector_alloc_base(const allocator_type&) : _M_start(0), _M_finish(0), _M_end_of_storage(0) {} protected: _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; typedef typename _Alloc_traits<_Tp, _Allocator>::_Alloc_type _Alloc_type; _Tp* _M_allocate(size_t __n) { return _Alloc_type::allocate(__n); } void _M_deallocate(_Tp* __p, size_t __n) { _Alloc_type::deallocate(__p, __n);} }; template <class _Tp, class _Alloc> struct _Vector_base : public _Vector_alloc_base<_Tp, _Alloc, _Alloc_traits<_Tp, _Alloc>::_S_instanceless> { typedef _Vector_alloc_base<_Tp, _Alloc, _Alloc_traits<_Tp, _Alloc>::_S_instanceless> _Base; typedef typename _Base::allocator_type allocator_type; _Vector_base(const allocator_type& __a) : _Base(__a) {} _Vector_base(size_t __n, const allocator_type& __a) : _Base(__a) { _M_start = _M_allocate(__n); _M_finish = _M_start; _M_end_of_storage = _M_start + __n; } ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); } }; #else /* __STL_USE_STD_ALLOCATORS */ template <class _Tp, class _Alloc> class _Vector_base { public: typedef _Alloc allocator_type; allocator_type get_allocator() const { return allocator_type(); } _Vector_base(const _Alloc&) : _M_start(0), _M_finish(0), _M_end_of_storage(0) {} _Vector_base(size_t __n, const _Alloc&) : _M_start(0), _M_finish(0), _M_end_of_storage(0) { _M_start = _M_allocate(__n); _M_finish = _M_start; _M_end_of_storage = _M_start + __n; } ~_Vector_base() { _M_deallocate(_M_start, _M_end_of_storage - _M_start); } protected: _Tp* _M_start; _Tp* _M_finish; _Tp* _M_end_of_storage; typedef simple_alloc<_Tp, _Alloc> _M_data_allocator; _Tp* _M_allocate(size_t __n) { return _M_data_allocator::allocate(__n); } void _M_deallocate(_Tp* __p, size_t __n) { _M_data_allocator::deallocate(__p, __n); } }; #endif /* __STL_USE_STD_ALLOCATORS */ template <class _Tp, class _Alloc = __STL_DEFAULT_ALLOCATOR(_Tp) > class vector : protected _Vector_base<_Tp, _Alloc> { // requirements: __STL_CLASS_REQUIRES(_Tp, _Assignable); private: typedef _Vector_base<_Tp, _Alloc> _Base; public: typedef _Tp value_type; typedef value_type* pointer; typedef const value_type* const_pointer; typedef value_type* iterator; typedef const value_type* const_iterator; typedef value_type& reference; typedef const value_type& const_reference; typedef size_t size_type; typedef ptrdiff_t difference_type; typedef typename _Base::allocator_type allocator_type; allocator_type get_allocator() const { return _Base::get_allocator(); } #ifdef __STL_CLASS_PARTIAL_SPECIALIZATION typedef reverse_iterator<const_iterator> const_reverse_iterator; typedef reverse_iterator<iterator> reverse_iterator; #else /* __STL_CLASS_PARTIAL_SPECIALIZATION */ typedef reverse_iterator<const_iterator, value_type, const_reference, difference_type> const_reverse_iterator; typedef reverse_iterator<iterator, value_type, reference, difference_type> reverse_iterator; #endif /* __STL_CLASS_PARTIAL_SPECIALIZATION */ protected: #ifdef __STL_HAS_NAMESPACES using _Base::_M_allocate; using _Base::_M_deallocate; using _Base::_M_start; using _Base::_M_finish; using _Base::_M_end_of_storage; #endif /* __STL_HAS_NAMESPACES */ protected: void _M_insert_aux(iterator __position, const _Tp& __x); void _M_insert_aux(iterator __position); public: iterator begin() { return _M_start; } const_iterator begin() const { return _M_start; } iterator end() { return _M_finish; } const_iterator end() const { return _M_finish; } reverse_iterator rbegin() { return reverse_iterator(end()); } const_reverse_iterator rbegin() const { return const_reverse_iterator(end()); } reverse_iterator rend() { return reverse_iterator(begin()); } const_reverse_iterator rend() const { return const_reverse_iterator(begin()); } size_type size() const { return size_type(end() - begin()); } size_type max_size() const { return size_type(-1) / sizeof(_Tp); } size_type capacity() const { return size_type(_M_end_of_storage - begin()); } bool empty() const { return begin() == end(); } reference operator[](size_type __n) { return *(begin() + __n); } const_reference operator[](size_type __n) const { return *(begin() + __n); } #ifdef __STL_THROW_RANGE_ERRORS void _M_range_check(size_type __n) const { if (__n >= this->size()) __stl_throw_range_error("vector"); } reference at(size_type __n) { _M_range_check(__n); return (*this)[__n]; } const_reference at(size_type __n) const { _M_range_check(__n); return (*this)[__n]; } #endif /* __STL_THROW_RANGE_ERRORS */ explicit vector(const allocator_type& __a = allocator_type()) : _Base(__a) {} vector(size_type __n, const _Tp& __value, const allocator_type& __a = allocator_type()) : _Base(__n, __a) { _M_finish = uninitialized_fill_n(_M_start, __n, __value); } explicit vector(size_type __n) : _Base(__n, allocator_type()) { _M_finish = uninitialized_fill_n(_M_start, __n, _Tp()); } vector(const vector<_Tp, _Alloc>& __x) : _Base(__x.size(), __x.get_allocator()) { _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); } #ifdef __STL_MEMBER_TEMPLATES // Check whether it's an integral type. If so, it's not an iterator. template <class _InputIterator> vector(_InputIterator __first, _InputIterator __last, const allocator_type& __a = allocator_type()) : _Base(__a) { typedef typename _Is_integer<_InputIterator>::_Integral _Integral; _M_initialize_aux(__first, __last, _Integral()); } template <class _Integer> void _M_initialize_aux(_Integer __n, _Integer __value, __true_type) { _M_start = _M_allocate(__n); _M_end_of_storage = _M_start + __n; _M_finish = uninitialized_fill_n(_M_start, __n, __value); } template <class _InputIterator> void _M_initialize_aux(_InputIterator __first, _InputIterator __last, __false_type) { _M_range_initialize(__first, __last, __ITERATOR_CATEGORY(__first)); } #else vector(const _Tp* __first, const _Tp* __last, const allocator_type& __a = allocator_type()) : _Base(__last - __first, __a) { _M_finish = uninitialized_copy(__first, __last, _M_start); } #endif /* __STL_MEMBER_TEMP][/code]
寻开心
2020-01-01
打赏
举报
回复
你这种适合百度, stl 源代码
Z左
2020-01-01
打赏
举报
回复
😭😭😭😭😭怎么办,不会
【量化私募百亿头部-急招岗位招聘】 1-高性能分布式存储
一共没问几个问题,常规的八股基本没问,说的最多的就是介绍自己的实习和项目,其他的git一个,linu。换了个更核一点的部门=================timeline一面 3.N二面 3.(N+2。一开始收到面试还挺激动,因为看岗位有点物联网方向,我正好有相关的实习,结果上来问的全是c
c++
是B。22号一面到店的一个部门,今天接到了面试邮件,但是部门成了到家的,以为是挂了被捞,但是官网流程上还是。朋友们,三面应该是技术总监面的(我感觉),别胡吹,有技术问题他是真问,一问一个不吱声。
计算机网络面试之-(数据链路层、物理层)工作原理
一开始技术面的时候技术官和我就聊聊家常,出来后以为挂了,结果后续等我上地铁告诉我过了,再喊回去二面,整体氛围蛮好的,一天走完流程,说十一前通知结果,不管如何,体。结果,一个心仪的off。之前在初始帝国的时候,斗皇就是称霸一方,有一个斗宗又能称霸帝国,斗宗之上的斗尊只存在于传说之中,更别提斗圣了之前小时候生活在一个普通地级市的小镇,大专学历都是高。iic spi uart非常细节的问题比如模拟iic如何配置引脚,我回答的配置成开漏,问为什么,我回答了开漏的特点,又问能不能配置成推挽输出,后来我回答应该能,
题解 | #近一个月发布的视频中热度最高的top3视频#
不得不说我的秋招也是很梦幻了,一月投递未果,一天直通oc,因为态度问题导致0offer,从头开始又到现在,未来谁也说不好,还是要慢慢努力沉淀自己啊。家人们,我211现在大四Java学到了springmvc,刚学完苍穹外卖,感觉学的好白,现在该怎么办,简历也不知道写啥,没做过什么项目,大佬们给我指一下路吧,好。美团无人机硬件,到家事业部,硬件一面非常好,方向技术和经历都对口,很想要我,二面被他主管挂掉了,我确实有点没发挥好,说话上逻辑不是很清晰,再给次机会好不好,有没。bg双非二本,一段用户运营实习。
多图表实现员工满意度调查数据分析python
员工满意度是指员工对于工作环境、待遇、职业发展和组织管理等方面的满意程度。它是衡量员工对工作的整体感受和情绪状态的重要指标。
2020届软件工程本科毕业生毕业设计项目.zip
2020届软件工程本科毕业生毕业设计项目
模式及实现
5,530
社区成员
4,169
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章