v[long long int] in C++
v[long long int] in C++
为什么我不能声明像long-long-int v[100000000]这样的值?编译时没有错误,但当我必须输入值时,它就会中断。。。
我有以下代码:
#include <iostream>
using namespace std;
int main ()
{
int n, i, poz, ok;
long long int a, v[10000000], aux;
cout << "v[0]= "; cin >> v[0];
cout << "n= "; cin >> n;
//cout << v[0] << " ";
for (i=1; i<n; i++)
{
v[i]=((v[i-1]%31337)*(31334%31337))%31337;
//cout << v[i] << " ";
}
//cout << endl;
a=v[n-1];
do
{
ok=0;
for (i=0; i<n-1; i++)
if (v[i]>v[i+1])
{
aux=v[i];
v[i]=v[i+1];
v[i+1]=aux;
ok=1;
}
}while (ok==1);
// for (i=0; i<n; i++)
//{
// cout << v[i] << " ";
//}
//cout << endl;
for (i=0; i<n; i++)
if (v[i]==a)
poz=i+1;
cout << poz;
return 0;
}
我必须输入这些值:[118631661427]。有什么想法吗?我应该怎么输入这些值?
C++标准有一个专门用于"实现量"的附录,解释为
由于计算机是有限的,C++实现不可避免地会受到它们能够成功处理的程序大小的限制。
您已经超出了实现对自动存储持续时间的变量总大小的限制。(通常称为"堆栈大小")。
您可以尝试使用动态分配:
std::vector<long long int> v(10000000);
动态分配也受到限制,但限制通常取决于地址空间的最大片段的大小,该片段通常远大于堆栈大小。
Vlad建议的静态存储持续时间也会改变适用的限制,但静态存储持续期的大型对象往往存在严重缺陷(例如磁盘上的可执行文件有几GB,加载需要几分钟时间)。
此数组在堆栈中分配,堆栈的内存通常非常有限。改为使用
static long long v[10000000];
或者最好使用标准容器std::vector<long long>
。此外,从代码中可以看出,数组的实际大小取决于用户输入的数字。因此,使用std::vector<long long>
确实会更好
例如
cout << "n= "; cin >> n;
std::vector<long long> v( n );
或
cout << "n= "; cin >> n;
std::vector<long long> v;
v.reserve( n );
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 不能在初始值设定项列表中将非常量表达式从类型 'int' 缩小到'unsigned long long'
- C++ MFC Libraries in Travis CI
- 在C++中使用GDAL可以将图像的像素坐标转换为lat,long吗
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- vtkTypeTraits.h 错误:"Type long is not 4 or 8 bytes in size."
- long long value in Visual Studio
- std::streampos、std::streamoff和std::streamsize是否为long-long-in
- v[long long int] in C++
- :<built-in>1:2: 警告:使用 C++0x 长整型整数常量 [-Wlong-long]
- long long in C++