C ++ - 在循环内声明引用变量?

时间:2013-03-18 14:08:29

标签: c++ variables loops reference declaration

据我所知,在循环内声明POD类型或原始类型的变量是可以的(没有开销)。

参考变量怎么样?
在循环中声明引用变量对性能有影响吗?

例如,变量引用向量,如下所示:

vector<vector<int> > data (100, vector<int> (100));
for (int i = 0; i < 100; ++i) {
    vector<int> &row = data[i];
    ...
}

没有开销,对吧?

谢谢。

2 个答案:

答案 0 :(得分:1)

从性能角度来看,引用在计算上与指针一样复杂(通常以相同的方式在内部实现)。

初始化引用本身没有更多的开销,然后初始化指针。

尽管根据您的用例,您可能会发现使用迭代器更容易且效率更高(如果稍微冗长一点)。

vector<vector<int> > data (100, vector<int> (100));
for (vector<vector<int> >::iterator row = data.begin(); row != data.end(); ++row) {
    // (*row)[0] = 1;
}

答案 1 :(得分:0)

应该没有开销,因为引用基本上是一个内存位置。 在32位应用程序中,内存位置是4个字节,因此在循环内声明该内容与声明int的开销相同:可忽略不计。