为什么在c++中,在矢量结束后插入数据是错误的
Why are errors to insert a data after end of vector in c++
#include <sstream>
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
string** DataStorage;
string line;
vector<vector<string>> extractingData(200, vector<string>(10));
vector<vector<string>> extractingData2(200, vector<string>(10));
string pathExtract;
string pathStorage;
ofstream storageFile;
ifstream storageFileRead;
fstream extractingFile;
fstream extractingFile2;
void ReadData(fstream& extractingFile, vector<vector<string>> extractingData, string pathExtract)
{
extractingFile.open(pathExtract, ios::in | ios::out | std::ios_base::app);
int i = 0;
int index;
if (extractingFile.is_open())
{
while (getline(extractingFile, line))
{
istringstream iss(line);
int j = 0;
while (!iss.eof()){
iss >> extractingData[i][j];
j++;
}
i++;
}
extractingFile.close();
}
}
int main() {
pathExtract = "sample.txt";
pathStorage = "mergedData.txt";
ReadData(extractingFile, extractingData, pathStorage);
ReadData(extractingFile2, extractingData2, pathExtract);
mergeData(extractingData, extractingData2, pathStorage);
}
void mergeData(vector<vector<string>> extractingData, vector<vector<string>> extractingData2, string pathStorage){
int i = 0;
int j = 0;
while (i<extractingData.size())
{
while (extractingData[i][0] != extractingData2[j][0])
{
j++;
}
if (extractingData[i][0] == extractingData2[j][0])
{
//extractingData[i].insert
extractingData[i].insert(extractingData[i].end(), extractingData2[j].pop_back()); // here is error
}
i++;
}
// storageFileRead.open(pathStorage, std::ios_base::out | std::ios_base::app);
storageFileRead.open(pathStorage);
i = 0;
if (storageFileRead.is_open())
{
ofstream outFile(pathStorage);
while (getline(storageFileRead, line)){
std::vector<int>::const_iterator col;
for (col = extractingData[i].begin(); col !=extractingData[i].end(); ++col) { // here is errors, too
outFile << *col;
}
outFile << endl;
i++;
}
}
}
我在一个名为mergedData.txt 的文本文件中有一个如下所示的数据集
country OD DM
Croatia 36 15
Spain 35 26
Belgium 32 38
USA 25 57
France 24 29
Estonia 24 19
并且在名为sample.txt的文本文件中给出了新的数据集
country VT
Estonia 21%
Belgium 26%
Croatia 6%
France 29%
Spain 13%
USA 42%
我想在每行的末尾添加一些名为VT(志愿服务时间(的新变量。
country OD DM VT
Croatia 36 15 6
Spain 35 26 13
Belgium 32 38 26
USA 25 57 42
France 24 29 29
Estonia 24 19 21
但也存在一些错误。任何帮助我都乐意。
extractingData[i].insert(extractingData[i].end(), extractingData2[j].pop_back()); // here is error
std::vector<>::pop_back
不返回值。它只是删除了元素。先获取值,然后调用pop_back
。
auto back = std::move(extractingData2[j].back());
extractingData2[j].pop_back();
extractingData[i].push_back(std::move(back));
相关文章:
- 逐行读取文件,并将数据插入变量和数组中
- Qt & SqlLite 将数据插入数据库
- C++ - 将数据插入到地图循环的地图中
- SQLite C/C++ 接口:将数据插入表时内存增加
- C++将 X 向量数据插入到另一个向量
- 如何通过 C 变量将数据插入表中
- 将数据插入一些复杂的数据结构-C
- 将数据插入C 中的文本文件中
- 如何通过c++中的应用程序将数据插入solr
- 在Windows上将数据插入文件
- C++链表——如何将每个新数据插入尾部
- C++链表实现多数据插入
- 在c++中,将数据插入到文件中的特定位置而不进行覆盖
- C++内存从将数据插入链表中泄漏
- 将数据插入多维向量并进行排序
- WINAPI SQLite C无法正确地将数据插入数据库
- 参照同一矢量的数据插入矢量
- PostgreSQL字节二进制数据插入
- Cuda有效地将数据插入到未排序的填充数组中
- 使用 ADO 将原始文件数据插入访问表的 BLOB("OLE 对象")字段