我的问题可以分为两部分:
问题1的代码示例:
const size_t a=100000000;
const unsigned char b=5;
float array[a][b];
for (size_t j=0; j<a; ++j)
for (unsigned char i=0; i<b; ++i)
std::cout << array[j][i] << std::endl;
在i
循环中使用unsigned char是否可以保存任何东西? array[j][i]
隐式将i
投射到size_t
吗?
问题2的代码示例:
vector<float> a(1000,0.);
vector<float> b(a);
for (size_t i=0; i<a.size(); ++i)
cout << a[i] << endl;
for (vector<float>::iterator it=b.begin(); it!=b.end(); ++it)
cout << *it << endl;
使用迭代器方法有优势吗?如果不是这种情况,那么什么时候?为什么?
奖金问题:
在for (size_t i=0; i<a.size(); ++i)
中,每次都会重新评估a.size()
吗?首先获得尺寸,我能赢得任何东西吗?
const size_t size = a.size();
for (size_t i=0; i<size; ++i)
std::vector
在调用vector::size()
时是否只返回成员变量的值,还是做了更精细的事情?