c++ - No matching constructor for initalization of 'ostream_iterator<int>' -
for code, why error, osteam_iterator template class ,why no matching constructor initalization of 'ostream_iterator', please give , thank you. define ostream_iterator template > class _libcpp_visible ostream_iterator
int main(int argc, const char * argv[]) { vector<int> sentence1; sentence1.reserve(5);// 设置每次分配内存的大小 sentence1.push_back(1); sentence1.push_back(2); sentence1.push_back(3); sentence1.push_back(4); sentence1.push_back(5); int c = 5; copy(sentence1.begin(), sentence1.end(), ostream_iterator<int>(cout, 1)); cout << endl;
the ostream_iterator class definition looks like:
template< class t, class chart = char, class traits = std::char_traits<chart>> class ostream_iterator /*...*/
whereas respective constructor declared as:
ostream_iterator(ostream_type& buffer, const chart* delim)
since second template argument of ostream_iterator
required of character type cannot replace int.
if ommit second template parameter can plug in string literal of type char const *
:
std::copy(sentence1.begin(), sentence1.end(), std::ostream_iterator<int>(cout, ","));
if c++11 available then
int c = 5; ( auto v : sentence1 ) std::cout << v << c;
is way of doing deserve , might suitable, too. advantage is, operator<<
more flexible argument of type "pointer char type".
Comments
Post a Comment