C++向量和数组
C++ vector and array
我试图解决一个名为"数组操作"的HackerRank问题的链接。 我在下面写了这段代码。它工作正常。但是,当我使用数组而不是向量时,我在案例 7-13 中遇到了分割错误。为什么会这样?
long arrayManipulation(int n, vector<vector<int>> queries) {
vector<long> arr(n);
long sum=0, max=LONG_MIN;
for(int i=0;i<n;i++){
arr[i] = 0;
}
for(int i=0;i<queries.size();i++){
arr[queries[i][0]-1] += queries[i][2];
if(queries[i][1]<n) arr[queries[i][1]] -= queries[i][2];
}
for(int i=0;i<n;i++){
sum += arr[i];
if(sum>max) max=sum;
}
return max; }
long arrayManipulation(int n, vector<vector<int>> queries) {
long arr[n];
long sum=0, max=LONG_MIN;
for(int i=0;i<n;i++){
arr[i]=0;
}
for(int i=0;i<queries.size();i++){
arr[queries[i][0]-1]+=queries[i][2];
if(queries[i][1]<n) arr[queries[i][1]]-=queries[i][2];
}
for(int i=0;i<n;i++){
sum+=arr[i];
if(sum>max) max=sum;
}
return max;
}
可变长度数组具有可用堆栈限制,如果它超过可能发生的限制 SegV(通过堆栈溢出(。
如果大小足够大,固定长度数组也会发生同样的情况。
尝试使用此方法以查看问题:
long arr[10000000]; // should fail for same reason in HackerRank
相关文章:
- 将数组/向量发送到 c++ 脚本的 cython 示例
- C++:在多个线程中访问同一数组/向量的不同单元格是否会产生数据竞赛?
- 将指向多维数组向量中的单个项的指针传递给函数 c++
- 数组向量的文件 I/O
- 在一行中初始化和引入数组向量的正确方法?
- C++ 返回具有最小硬币的数组/向量以获得价值动态规划
- 将整数向量转换为字节数组向量,然后调用每个字节数组
- 我可以在不循环访问数组/向量的情况下检查数组/向量中的单词吗?
- (C )创建可以从功能访问的动态全局数组/向量
- 提升是否具有用于数组向量的智能指针
- 将函数应用于数组向量的元素
- 数组向量的内存布局是什么
- 获取数组/向量末尾地址的未定义行为
- "Empty"数组\向量成员 C++
- 将字符串向量转换为双2-D数组向量
- 排序多维数组/向量
- 如何创建模板化对象的数组/向量
- 如何在数组向量上使用 std::find
- 无法删除C++中的数组/向量
- 具有元素自定义构造函数的对象数组/向量