for(auto i:matrix) 和 for(const auto& i:matrix)
c++
class Solution {
public:
bool searchMatrix(vector<vector<int>>& matrix, int target) {
int n=matrix.size(),m=matrix[0].size();
for(auto i:matrix)
for(auto& i:matrix)
{
auto it = lower_bound(i.begin(),i.end(),target);
if(it!=i.end()&&*it==target) return true;
}
return false;
}
};
在 C++ 中,for(auto i:matrix) 和 for(const auto& i:matrix) 的区别在于:
- for(auto i:matrix) 会拷贝每个子数组(
vector<int>
),这会消耗额外的内存和时间,特别是当矩阵很大时。 - for(auto& i:matrix) 是引用每个子数组,不会拷贝数据,因此更高效。