C++ 将整数读入向量时超出内存限制

C++ 将整数读入向量时超出内存限制,c++,string,parsing,file-io,vector,C++,String,Parsing,File Io,Vector,我试图将整数值从文本文件读入向量 输入文件ip1.txt包含以下内容: 四, -1000-2000-3000-4000 int-maxsub(向量a,int-size) { a、 删除(a.begin()); 向量和; 对于(vector::iterator w=a.begin();w如果您知道第一个数字将是向量的长度,为什么不利用它呢?: int length = 0; std::cin >> length; std::vector<int> numbers; num

我试图将整数值从文本文件读入向量

输入文件
ip1.txt
包含以下内容: 四,

-1000-2000-3000-4000

int-maxsub(向量a,int-size)
{
a、 删除(a.begin());
向量和;

对于(vector::iterator w=a.begin();w如果您知道第一个数字将是向量的长度,为什么不利用它呢?:

int length = 0;
std::cin >> length;

std::vector<int> numbers;
numbers.reserve(length);
别忘了
#include
#include
#include
。还要注意
std::cin
可以很容易地替换为文件流:)

编写for循环

std::vector<int> nums;
int size;
std::cin >> size;
for (int i = 0; i < size; ++i)
{
    int val;
    std::cin >> val;
    nums.push_back(val);
}
std::向量nums;
整数大小;
标准:cin>>尺寸;
对于(int i=0;i>val;
nums.推回(val);
}
'a.begin()+size-1'在begin()之前:

拥有

for(vector<int>::iterator w=a.begin(); w <= a.begin()+size-1; ++w)

尺寸是-1000

如果要排除第一个和最后一个元素:

if( ! a.empty()) {
    // Not erasing the first element: a.erase(a.begin());
    for(vector<int>::size_type i = 1;  i < a.size() - 1; ++i);
}
如果(!a.empty()){
//不擦除第一个元素:a.erase(a.begin());
对于(vector::size_type i=1;i
源代码中的错误。 maxsub()中的所有循环

向量“a”只有(大小为1)个元素。 因此,所有for运算符都是“边界外”。
我想,这是产生警告消息的原因。

我会使用
for
循环来读取元素,每次读取一个元素,直到sentinel值
-4000
…文件有多大?在我看来,您的代码有缺陷,我想知道错误是由这些缺陷之一而不是文件的大小引起的。为什么
w为什么
int u=sum.size()-1;int m=sum.at(u);返回m;
何时可以执行
return sum.back();
for(vector<int>::iterator w=a.begin(); w <= a.begin()+size-1; ++w)
int k = nums[0];
int u = maxsub(nums,k);
nums[0] = -1000;
if( ! a.empty()) {
    // Not erasing the first element: a.erase(a.begin());
    for(vector<int>::size_type i = 1;  i < a.size() - 1; ++i);
}
for(vector<int>::iterator w=a.begin(); w <= a.begin()+size-1; ++w)
for(int t=0; t <= size-1; t++)
a.erase(a.begin());