2015-08-09 48 views
3

根據標題問題。在std :: ostream上可以使用std :: back_insert_iterator嗎?

我假設答案是「否,因爲std::back_insert_iterator對象在容器上調用push_back()」。

如果答案其實沒有,那麼有沒有我可以在我的模板函數中使用到兩個附加到一個std::string,附加到std::vector<char>,並寫入到std::ostream任何模板類迭代器?

回答

5

這是std::ostream_iterator是:

#include <iostream> 
#include <string> 
#include <vector> 
#include <iterator> 
#include <algorithm> 

int main() 
{ 
    char c[] = { 'a', 'b', 'c', 'd' }; 

    std::vector<char> v; 
    std::string s; 

    std::copy(c, c+4, std::back_inserter(v)); 
    std::copy(c, c+4, std::back_inserter(s)); 
    std::copy(c, c+4, std::ostream_iterator<char>(std::cout)); 
} 

DEMO

+0

謝謝。我調整了我的函數,使得第四個參數現在被參數化爲一個'OutputIterator',而不是接受'std :: back_insert_iterator '作爲第四個參數(一個使用前一個模板參數類型的實例化)。非常感謝您的快速幫助。 – magnus

+1

@ user1420752如果這解決了您的問題,請單擊答案左側的複選標記以接受。 –

相關問題