假設我有一個std::array<SomeType, N>
,我想調用一個函數,它使用迭代器處理std::array
中的對象,但不知道容器是否爲std::array
。使用迭代器執行對象操作的函數
SOMETYPE是具有公共成員函數的doSomething()
例如一個函數可能是一個類:
template<typename Iterator>
void action(Iterator &beg, Iterator &end) {
for (; beg != end; ++beg)
beg->doSomething();
}
調用此功能可以通過:
int main() {
std::array<SomeType, 10> a;
action<std::array<SomeType, 10>::iterator>(a.begin(), a.end());
}
但我想知道這是否是這樣做的方式?尤其是因爲模板可以用於每個類。有沒有辦法將函數限制到SomeType
而不讓函數知道容器是std::array
?
寫入的代碼不會編譯。至少它不是格式良好的C++。 [Demo](http://melpon.org/wandbox/permlink/tw8f7mpNxZTZel9X) –