我是一名Java程序员,想学习一些C++知识。这里有一小段代码片段,我认为它能够工作,是因为有隐式转换的存在,但我想知道规范的哪个部分涉及了这个问题以及其他隐式转换规则,是否有文档/链接/网站介绍隐式转换规则?
#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,
sasuke
vector<bool>
是vector
的一个特化版本,在几个方面表现不同(虽然这些方面都与你的问题无关,但是我认为你应该知道)。在使用它时要小心。 - Björn Pollexvector<bool>
问题的文章:http://www.gotw.ca/gotw/050.htm。 - Fred LarsonBOOL
的动态数组,那么可以使用vector<char>
;或者如果您想要包含实际的bool
值的序列容器,则可以使用deque<bool>
;又或者,如果您想要最小化内存使用,并且不介意它不是一个真正的容器,那么可以使用vector<bool>
、boost::dynamic_bitset
(接口更丰富)或者std::bitset
(如果大小是固定的)。 - Mike Seymour