据我所知,在循环内声明 POD 类型或原始类型的变量是可以的(没有开销)。
参考变量呢?
在循环中声明引用变量对性能有影响吗?
例如,变量引用向量,如下所示:
vector<vector<int> > data (100, vector<int> (100));
for (int i = 0; i < 100; ++i) {
vector<int> &row = data[i];
...
}
不会有开销,对吧?
谢谢你。
据我所知,在循环内声明 POD 类型或原始类型的变量是可以的(没有开销)。
参考变量呢?
在循环中声明引用变量对性能有影响吗?
例如,变量引用向量,如下所示:
vector<vector<int> > data (100, vector<int> (100));
for (int i = 0; i < 100; ++i) {
vector<int> &row = data[i];
...
}
不会有开销,对吧?
谢谢你。
从性能的角度来看,引用在计算上与指针一样复杂(并且通常以相同的方式在内部实现)。
初始化引用本身并没有比初始化指针更多的开销。
但是,根据您的用例,您可能会发现使用迭代器更容易且同样有效(如果稍微冗长的话)。
vector<vector<int> > data (100, vector<int> (100));
for (vector<vector<int> >::iterator row = data.begin(); row != data.end(); ++row) {
// (*row)[0] = 1;
}
应该没有开销,因为引用基本上是一个内存位置。在 32 位应用程序中,内存位置为 4 个字节,因此在循环内声明该内容与声明int
: 可忽略不计的开销相同。