我注意到使用简写for (auto i : <iterable>)
会给你一个i
:
a)实际上并不是迭代器..或者至少已经解除引用 b)不允许你改变可迭代对象。
因此这段代码
std::vector<std::vector<int>> int_matrix(10);
for (auto line : int_matrix)
{
line.resize(10);
}
不会改变矩阵内矢量的大小,不像这段代码:
for (auto line = int_matrix.begin(); line != int_matrix.end(); ++line)
{
line->resize(10);
}
为什么会这样,如何从速记中获取迭代器来实际修改可迭代对象?