社区
C++ 语言
帖子详情
c++ 基础问题
后知后觉的山哥
2009-06-03 12:56:48
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector<int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector<int> _statck(cap)?, 这样初始化有什么好处吗?
...全文
162
10
打赏
收藏
c++ 基础问题
iStack::iStack(const int cap):_stack(cap),_top(0) { } 这是一个类的构造方法, _stack是 vector 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector _statck(cap)?, 这样初始化有什么好处吗?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
后知后觉的山哥
2009-06-03
打赏
举报
回复
初始化列表中做初始化 是不是要先于 istack自身的构造方法 假如 istack有一个基类, 那是 基类的构造先执行 还是初始化列表中的东西先被执行到。。。。。。。
猫已经找不回了
2009-06-03
打赏
举报
回复
[Quote=引用 2 楼 binghuazh 的回复:]
引用楼主 slamjam 的帖子:
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector <int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector <int> _statck(cap)?, 这样初始化有什么好处吗?
要看_stack怎么实现了
1)_stack(cap),那么就是初始化为0,top指向第0个元素, //此时capac…
[/Quote]
qizhao2001
2009-06-03
打赏
举报
回复
这里就是相当于你定义局部变量的 vector <int> _statck(cap) 一样。
但是很明显,作为类成员的 _statck不能像上面那样写 ( vector <int> _statck(cap) )来初始化 _statck
对象,而是要在构造函数上写(构造函数就是用来初始化该类的):
iStack::iStack(const int cap):_stack(cap),_top(0)
类的成员的初始化就要写在构造函数名 :之后的初始化列表中。
mujiok2003
2009-06-03
打赏
举报
回复
[Quote=引用楼主 slamjam 的帖子:]
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector <int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector <int> _statck(cap)?, 这样初始化有什么好处吗?
[/Quote]
初始化列表的作用。_stack是vector,一般是以类似数组的连续内存保存数据,可以查看STL源代码。 他是相当于 vector <int> _statck(cap)的。这样之后,_stack已经包含cap个0了,与分配一定的内存,避免多次内存分配带来的开销。这和vector的allocator(内存分配器)有关了。
0
pengzhixi
2009-06-03
打赏
举报
回复
预先配置一定的空间同时将元素初始化为0.
jhony_lee
2009-06-03
打赏
举报
回复
vector <int> _statck(cap),预先配置一定得空间,可以避免插入元素时,元素的移动。
blingpro
2009-06-03
打赏
举报
回复
[Quote=引用楼主 slamjam 的帖子:]
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector <int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector <int> _statck(cap)?, 这样初始化有什么好处吗?
[/Quote]
要看_stack怎么实现了
1)_stack(cap),那么就是初始化为0,top指向第0个元素, //此时capacity = size = cap
2)如果是_stack.reserve(cap),那么就是预留cap大的空间,每次push_back就压进一个元素。//capacity = cap,size = 0;
amossavez
2009-06-03
打赏
举报
回复
vector <int> _statck(cap)?, 这样初始化有什么好处?
vector自己有这样的构造函数,使得vector有cap个元素,大小为0
sszwbuaa
2009-06-03
打赏
举报
回复
[Quote=引用楼主 slamjam 的帖子:]
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector <int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector <int> _statck(cap)?, 这样初始化有什么好处吗?
[/Quote]
这样初始化的好处是可以提高效率;
另外对于const类型成员、引用类型成员,以及没有默认构造函数的成员必须以这种方式初始化。
AbnormalSubmarine
2009-06-03
打赏
举报
回复
[Quote=引用 7 楼 hairetz 的回复:]
引用 2 楼 binghuazh 的回复:
引用楼主 slamjam 的帖子:
iStack::iStack(const int cap):_stack(cap),_top(0)
{
}
这是一个类的构造方法, _stack是 vector <int> 类型, _top是 int型, 那么这种初始化的方式 在底层都做了些什么? _top比较好理解, 但是_stack是怎么实现的? 他是相当于 vector <int> _statck(cap)?, 这样初始化有什么好处吗?
要看_stack怎么实现了
1)_stack(cap),那么就是初始化为0,top指向第…
[/Quote]
+++++++++++++++++++++++++++++++++++++++++++++++++++++
C++
面试
问题
总结——(CPP
基础
、网络编程)
坚持还是平庸1. main 函数 执行前 和执行后会执行什么?2. 网络粘包
问题
2.1 长连接 和 短连接2.2 什么时候需要考虑粘包
问题
?2.3 粘包出现原因:2.4 解决方法2.5 网络现象解释2.6 UDP 会出现粘包
问题
吗?2.7 保护消息边界和流3. 内存池的设计4. 网络编程中的加密算法4.1 如何解决数据传输的安全
问题
?4.2 加密算法 1. main 函数 执行前 和执行后会执行什...
【0
基础
秒入门】matplotlib-cpp 常见
问题
解决方案
matplotlib-cpp 常见
问题
解决方案 项目
基础
介绍 matplotlib-cpp 是一个极其简单但功能强大的
C++
头文件库,用于在
C++
中创建图表。它基于流行的 Python 库 matplotlib,旨在模仿 Matlab 和 matplotlib 的绘图 API。通过这个库,用户可以在
C++
代码中直接调用 matplotlib 的功能,生成各种图表。 新手使用注意事项及解...
C++
基础
问题
函数调用时总的来说,函数效率有所增长:减少一次 push 指令。
C++
面试常见
问题
(
C++
基础
)
在网络传输中,通常使用大端字节序(网络字节序)。在具体的操作系统中,字节序取决于底层硬件架构。例如,Linux和Windows操作系统主要运行在x86和x86_64(Intel和AMD处理器)架构上,这些处理器使用小端字节序。而其他硬件平台,如PowerPC和SPARC等,可能使用大端字节序。宏定义(#define)和内联函数(inline)都是为了减少函数调用开销和提高代码运行效率而引入的机制,但是它们的实现方式和作用机制略有不同。
C++ 语言
65,210
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章