【发布时间】:2012-01-25 08:23:23
【问题描述】:
我是一名 Java 程序员,一直在尝试学习一点 C++ 以扩展我的知识。这是一个小代码 sn-p 我认为由于隐式转换而起作用,但我想知道它指的是规范的哪一部分以及我必须注意的其他规则是什么关于隐式转换。是否有制定隐式转换规则的文档/链接/站点?
#include <vector>
#include <iostream>
#include <iterator>
int main(void) {
using namespace std;
vector<bool> a;
a.push_back("asdf");
a.push_back("");
a.push_back(12);
a.push_back(0.0);
copy(a.begin(), a.end(), ostream_iterator<bool>(cout, "\n"));
return 0;
}
/*
output:
1
1
1
0
*/
TIA,
佐助
【问题讨论】:
-
关于您的 code-sn-p 最重要的一点是,
vector<bool>是vector的一个特化,并且在多个方面表现不同(但这些都与您的问题无关,只是觉得你应该知道)。使用时要小心。 -
在 C++ 中不推荐使用向量
。 -
@Constantinius 你搞错了
-
@sasuke:这是一篇讨论
vector<bool>问题的文章:gotw.ca/gotw/050.htm -
@sasuke:
vector<char>如果你想要一个动态数组,其行为或多或少类似于bool;或deque<bool>,如果您想要一个包含实际bool值的序列容器;或vector<bool>、boost::dynamic_bitset(类似,但界面更丰富)或std::bitset(如果大小是固定的),如果您想最小化内存使用,并且不介意它不是真正的容器.