那麼當要傳遞 vector 類型的資料到函數當中要怎麼利用 const 呢,這邊要注意的事如果你在函式當中使用 iterator 操作了該 vector 的話,就會造成 cannot convert from 'std::_Vector_const_iterator<_Ty,_Alloc>' to 'std::_Vector_iterator<_Ty,_Alloc>' 類似的錯誤。
原因就是容器當中若你要使用不更動容器內容的 iterator,應該要改用 const_iterator,所以只要把 iterator 改成 const_iterator 就可以利用 const & by reference 的方式把 vector 傳進函式當中並且確保他不會被更動!
#include <vector>
using namespace std;
int sumOfVector(const vector<int> &vec)
{
int sum = 0;
//typedef vector<int>::iterator intVect; // Error
typedef vector<int>::const_iterator intVect; // Good!
intVect itBegin = vec.begin();
intVect itEnd = vec.end();
for (intVect it = itBegin; it != itEnd; it++)
sum += *it;
return sum;
}
int main()
{
vector<int> vec(10, 1);
int sum = sumOfVector(vec);
return 1;
}
...
No comments:
Post a Comment