gpt4 book ai didi

c++ - 函数填充 vector ,但它在某个时候变成空的。

转载 作者:行者123 更新时间:2023-11-28 00:43:25 35 4
gpt4 key购买 nike

我遇到了一个奇怪的问题。我试图用一个函数填充一个 vector ,然后用另一个函数输出它。即使在调用该函数之后,该 vector 仍显示为空,我相信它正在正确填充它。到目前为止,这是我的代码。结果是

"在.txt中输入输入文件名在 vector 中搜索在抛出“std::out_of_range”的实例后调用终止 什么(): vector::_M_range_check中止(核心转储)"

    #include <iostream>
#include <cassert>

#include<vector>
#include "ArrayUtilities.h"


using namespace std;

void fillArray(istream& io, std::vector<int> a, int& actualSize)
{
int temp,i=0;
io>>temp;
while (temp!=-999)
{
a.push_back(temp);
io>>temp;
i++;
}

actualSize=i;
}



void outputArray(ostream& os,
std::vector<int> a,
const int actualSize,
const string& info )
{
os<<info<<"\n";
for (int w=0;w<actualSize;++w)
{
os<< a.at(w)<<" ";

}
os<<"\n";
}

主要内容(){

int actualSize;
string fileName;
string info;


std::vector<int> a;
cout << "Enter the input file name ";
cin >> fileName;
ifstream inData;
ofstream outData;
inData.open(fileName.c_str());
outData.open("out.txt");
int searchItem;
inData>>info;
inData>>searchItem;
fillArray (inData, a, actualSize);
cout <<"Search in vector\n";
outData<<"Search in vector\n";
outputArray(outData, a, actualSize, info);
outputArray(cout, a, actualSize, info);
//sequential search
int position;
position=seqSearch(a,actualSize,searchItem);
if (position > 0)
{
cout << "Sequential Search: SearchItem "
<< searchItem
<< " is on position "
<< position
<< "\n";
outData << "Sequential Search: SearchItem "
<< searchItem
<< " is on position "
<< position
<< "\n";
}
else
{
cout << "Sequential Search: SearchItem "
<< searchItem
<< " is not in the list\n";
outData << "Sequential Search: SearchItem "
<< searchItem
<< " is not in the list\n";
}

谢谢你的帮助

最佳答案

您的函数具有 vector 的本地拷贝。它不影响作为参数传递的 vector 。您可以通过传递对 vector 的引用来解决此问题:

void fillArray(istream& io, std::vector<int>& a, int& actualSize)
// ^

关于c++ - 函数填充 vector ,但它在某个时候变成空的。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17585539/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com