像問題所述,我想知道原因。因爲當我嘗試獲取const
與非const
迭代器之間的距離時出現錯誤。爲什麼std :: distance對const和nonconst迭代器的混合不起作用?
vector<int> v;
auto it=v.begin();
auto cit=v.cbegin();
distance(it,cit);
no matching function for call to ‘distance(__gnu_cxx::__normal_iterator<int*, std::vector<int> >&, __gnu_cxx::__normal_iterator<const int*, std::vector<int> >&)
從我對迭代器的有限理解中,我沒有看到爲什麼它不應該工作。
嗯爲什麼不他們只是用2模板參數創建模板?是否有可能在cpp core lang中執行?我所要求的是設計決定還是語言限制? – NoSenseEtAl 2012-03-08 18:17:59
要清楚,我知道他們可以用2個模板參數製作模板,但是我想知道它會與1個模板參數版本 – NoSenseEtAl 2012-03-08 18:18:55
@NoSenseEtAl發生衝突,我會說設計決定。這樣做更簡單,並且計算不同種類的迭代器(例如,一個隨機訪問迭代器和一個前向迭代器)之間的距離可能不是您想要經常執行的操作。你確實可以用兩個模板參數來編寫一個版本,但是解決什麼現實世界的問題呢? – 2012-03-08 18:23:10