用迭代器速记循环编写

时间:2016-05-03 21:26:06

标签: c++ iterator shorthand writing

我注意到使用简写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);
}

为什么会这样,如何从速记中获取迭代器来实际修改可迭代对象?

0 个答案:

没有答案