2016-01-13 52 views
2

我仍然是C++的初學者。我有以下問題:比方說,我有內容的字符串,我想這些內容複製到這樣的載體:用於「插入」的自己的函數模板 - 方法(矢量)

std::string s{"Professional"}; 
std::vector<char> v{}; 
v.insert(s.begin(),s.end()); 

我以爲我的向量是空的,我也可以用內容填充字符串。對於上述我想有一個自己的功能模板,如:

template<typename InputIterator> void insert(InputIterator first, InputIterator last) { 

} 

而這裏存在的問題。我應該如何實現這一點?我會很高興有一個想法。由於

+3

你需要一個說法,說明哪裏*數據應該被插入。 –

回答

1

你可以寫你自己的charVectorstd::vector<char>源自具有方法insert

struct charVector : std::vector<char> 
{ 
    template<typename InputIterator> 
    void insert(InputIterator first, InputIterator last) 
    { 
     assign(first, last); 
    } 
}; 

std::string s{"Professional"}; 
charVector v{}; 
v.insert(s.begin(), s.end()); 

如果你喜歡一個梅索德其將數據添加到您的charVector使用std::copy的結束和std::back_inserter

#include <algorithm> // std::copy 
#include <iterator> // std::back_inserter 

struct charVector : std::vector<char> 
{ 
    template<typename InputIterator> 
    void insert(InputIterator first, InputIterator last) 
    { 
     std::copy(first, last, std::back_inserter(*this)); 
    } 
}; 
+0

儘管我認爲他想爲抽象數據類型創建一個模板函數,儘管assign可能仍然可以用於此處? – WearyWanderer

+0

謝謝你的幫助。實際上,我想將上述函數方法集成到我已有的類模板中 模板 class Test {.....} – curlie