为什么我的代码无法处理大型数组输入(>10000)?
why my code is unable to handle large array input(>10000)?
int n;//input size of array
cin >> n;
vector <int> a(n);
vector <int> in;
for (int i = 0; i < n; i++)
cin >> a[i];//input array elements
if (n == 1) {
cout << "1" << "n";
return 0;
}
for (int i = 1; i <= n ; i++)//to get longest incresing subsequence in the array
{
int flag = 0, j = i;
while (j < n && a[j] >= a[j - 1] ) {
j++;
flag = 1;
}
if (flag == 1) {
in.push_back(j - i + 1);
i = j;
}
}
int maxval = in[0]; //to get maximum sized element from in
for (int i = 1; i < in.size(); i++)
if (in[i] > maxval)
maxval = in[i];
cout << maxval << "n";
我尝试了相同的值代码<10000它运行良好。。。我已经用long-long-int替换了所有的int,然后它也显示了向量下标超出范围的错误。。。
样本输入:
10
49532 49472 49426 49362 49324 49247 49165 49162 49108 49093
我期望0,但它显示"矢量下标超出范围">
问题的原因是
int maxval = in[0];//to get maximum sized element from in
使用时,矢量in
为空
10
49532 49472 49426 49362 49324 49247 49165 49162 49108 49093
因此,您可以不使用下标运算符。
你可以写例如
int maxval = in.empty() ? 0 : in[0];
修复此问题:
int maxval = in.size()? in[0]:0;
向量类运算符检查索引是否在数组的下限和上限之间,数组将是(0->size-1(
MSVC库:
_NODISCARD _Ty& operator[](const size_type _Pos) noexcept { // strengthened
auto& _My_data = _Mypair._Myval2;
#if _CONTAINER_DEBUG_LEVEL > 0
_STL_VERIFY(
_Pos < static_cast<size_type>(_My_data._Mylast - _My_data._Myfirst), "vector subscript out of range");
#endif // _CONTAINER_DEBUG_LEVEL > 0
return _My_data._Myfirst[_Pos];
}
问题是,如果大小为零,就永远不会调用in.pushback。
因此在[0]调用中,运算符将抛出超出范围的异常索引。
相关文章:
- EASTL矢量<向量<int>>连续的
- 回文数在 1 到 10000 之间
- 为什么我的代码无法处理大型数组输入(>10000)?
- C - 创建矢量&lt; vector&lt; double&gt;&gt;矩阵具有分配而不是inizializ
- C 字符串比较“祝您好运”&gt;“再见”
- 如何读取和处理格式化的日期,如 01/11/1998、星期日(10000 个输入)C++
- 为什么将此对向量&lt; map&lt; int,int&gt;&gt;中的地图进行更新.失败
- 确定数的因数 当除数之和不大于该数时,程序将不接受大于 10000 的限制
- C :对矢量进行排序&lt; struct&gt;(结构有2个整数)基于结构的整数之一
- C 操作员&gt;&gt;与突变器过载
- 明确的专业化“ CheckIntmap&lt;&gt;”实例化
- 是否需要使用 - &gt;运算符在C 中调用成员函数时
- 什么是模板&lt;&gt;inline bla bla
- 编辑C Qlist&lt; object*&gt; gt;QML代码和一些QML警告中的模型
- eigen :: llt&lt;eigen :: matrixxd&gt;具有不完整的类型
- 错误,包括&lt; ctype&gt;在原子上使用C 11
- 错误c++visual studio c2227左侧'->;Init';必须指向类/结构/联合/泛型类型
- std::vector<;uint8_t>;当C++11/14启用时,手动复制而不是调用memcpy
- ``这个''不能用this-&gt;指针变量
- 如何加入向量&lt; int&gt;到C 中的单个INT