社区
C++ 语言
帖子详情
istream_iterator是个类,为什么可以直接当做vector构造函数的参数使用?
alvinliu1976
2007-04-04 12:00:59
如题。按理说vector构造函数的参数是个const_iterator,是个类中的定义变量类型,不是个类类型啊?为什么istream_iterator可以直接做实参,有隐式类型转换吗?istream_iterator中也好像没有重载转换运算符啊?
...全文
252
6
打赏
收藏
istream_iterator是个类,为什么可以直接当做vector构造函数的参数使用?
如题。按理说vector构造函数的参数是个const_iterator,是个类中的定义变量类型,不是个类类型啊?为什么istream_iterator可以直接做实参,有隐式类型转换吗?istream_iterator中也好像没有重载转换运算符啊?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
珍惜生命远离CPP
2007-04-04
打赏
举报
回复
istream_iterator这个是迭代器,
匹配的是
template<class InputIterator>
vector(
InputIterator _First,
InputIterator _Last
);
这个
taodm
2007-04-04
打赏
举报
回复
这么大大的template<class InputIterator>没看见么。
模板还没学过?
alvinliu1976
2007-04-04
打赏
举报
回复
istream_iterator<int> infine(cin);
istream_iterator<int> eos;
vector<int> temparr(infine,eos);
上述代码在VC6.0下给出类型不能匹配的错误,在VC2005下没问题。我的问题是:vector的构造函数这里的参数只能是int的指针;而代码中直接把istream_iterator<int> 这个类对象给了形参。这个类对象只是istream_iterator<int>的一个对象,不是int的指针啊?除非进行重载转换运算符。但是我在VC2005 MSDN下找不到说明。
alvinliu1976
2007-04-04
打赏
举报
回复
所有构造函数的都看了啊,template<class InputIterator>
vector(
InputIterator _First,
InputIterator _Last
);
template<class InputIterator>
vector(
InputIterator _First,
InputIterator _Last,
const Allocator& _Al
);
只可能匹配这两个啊
taodm
2007-04-04
打赏
举报
回复
你知道vector有多少个构造函数吗?
alvinliu1976
2007-04-04
打赏
举报
回复
template<class _Iter>
vector(_Iter _First, _Iter _Last)
: _Mybase()
{// construct from [_First, _Last)
_Construct(_First, _Last, _Iter_cat(_First));
}
刚才终于找到答案了,这是匹配的是这个构造函数,注意这个构造函数是个函数模版,真是厉害,类模版里头又套一个函数模版,我都晕了。还有更晕的,这个函数模版中的_Construct函数也不是一个实在函数,也是类模版中的函数模版。也就是构造函数的模版中调用了一个模版函数。请大家看看是不是这样的。注:以上是在VC2005平台下,VC6.0不行。
VC++入门经典(part2)
构造函数
的第一个
参数
是指向流的指针,通常为 `std::cin`。当从流中读取数据时,迭代器会自动处理数据的
类
型转换。 **示例代码**: ```cpp #include #include <
vector
> #include <
iterator
> int main() { std::...
标准模板库STL(Standard Template Library)指南
它还提供了三种
构造函数
:默认
构造函数
、
参数
化
构造函数
和拷贝
构造函数
。 ##### 2.2 函数对象 (Function Objects) 函数对象是一种特殊的
类
实例,它可以像普通函数那样被调用。它们通常用于定制算法的行为,例如...
C++ Standard Library Practical Tips.doc
结合`std::
istream
_
iterator
`和容器的
构造函数
。 #### TIP 8: 存储特定值到现有容器
使用
`std::insert`或`std::emplace`。 #### TIP 9: 将一个容器的内容存储到另一个容器
使用
`std::swap`(如果容器大小相同),...
The C++ Standard Library(简体中文)
- **基本型别的显式初始化**:这是C++对
构造函数
调用的一种改进,旨在提高代码的安全性和清晰性。 - **异常处理(Exception Handling)**:提供了一种优雅的方式来处理运行时可能出现的问题,如内存分配失败等。 - ...
精版Effective STL读书笔记
- `empty()`和`size()`成员函数:用于检查容器是否为空以及获取容器的大小,其中`empty()`函数在性能上优于`size()`。 - `splice()`方法:用于在两个`list`之间移动元素,无需复制元素本身,提高了效率。 - 容器构造...
C++ 语言
65,187
社区成员
250,526
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章