我需要编写一个简单的方法来计算矩阵数据中的最高元素(在本例中使用2D向量实现).在该方法中,最初,我使用for循环的一种形式(最常见的形式)访问2D向量中的每个元素,该形式给出了一个"分割错误".不幸的是,我找不到一个好的理由让它发生.最终,我以不同的方式使用for循环解决了这个问题.然而,我仍然想知道在最初的美国for循环中"分段错误"的原因.我相信这也是一种正确的方法来迭代二维向量.有人能解释一下原因吗?提前感谢!
初始(给出错误):
class customers {
public:
int maximumWealth(vector<vector<int>>& accounts) {
int richest_customer_wealth = 0;
int sum;
for(int i=0;i<accounts.size();++i){
sum = 0;
for(int j=0;i<accounts[i].size();++j){
sum += accounts[i][j];
}
if(sum > richest_customer_wealth)
richest_customer_wealth = sum;
}
return richest_customer_wealth;
}
};
修改for循环后:
class customers{
public:
int maximumWealth(vector<vector<int>>& accounts) {
int richest_customer_wealth = 0;
int sum;
for(vector<int> row: accounts){
sum = 0;
for(int val: row){
sum += val;
}
if(sum > richest_customer_wealth)
richest_customer_wealth = sum;
}
return richest_customer_wealth;
}
};
我相信这可能是因为在你的内心深处
应该是什么时候