相对较新的C ++场景。无论如何,我有一个清单:
1 5 6
3 1 2
5 3 4 7
6 2
7 3
我试图填写缺少的数字(在本例中为2和4)。该列表作为矢量矢量输入。这工作正常。我在不需要的地方插入数字的功能。这是我的代码:
#include<iostream>
#include<vector>
#include<string>
#include<fstream>
#include<sstream>
using namespace std;
int main()
{
vector< vector<int> > vec1;
vector<int> tempVec;
string str = "";
stringstream ss;
int temp = 0;
ifstream iFile;
// iFile.open("E:\\COMP 220\\SCC sample input.txt");
iFile.open("E:\\SCC sample input2.txt");
if (iFile.is_open()) //Inputs file
{
cout << "File is open!\n";
getline(iFile, str);
while (!iFile.eof())
{
int z = 0;
stringstream ss(str);
while (ss >> temp)
{
tempVec.push_back(temp);
cout << tempVec[z] << " ";
z++;
}
vec1.push_back(tempVec);
cout << endl;
tempVec.clear();
getline(iFile, str);
}
}
int count = 0;
while (count < vec1.size() - 1)
{
if (vec1[count][0] != vec1[count + 1][0] - 1)
{
tempVec.clear();
tempVec.push_back(vec1[count][0] + 1);
vec1.insert(count, tempVec);
}
else
count++;
}
return 0;
}
完成后,我希望代码类似于:
1 5 6
2
3 1 2
4
5 3 4 7
6 2
7 3
有什么想法吗?当前问题是编译器错误:
vec1.insert(count,tempVec);
答案 0 :(得分:1)
您收到编译器错误,因为count
是一个整数,std::vector::insert的第一个参数是迭代器,而不是整数。
要使用迭代器到达向量中的某个位置,请使用vector::begin()
迭代器并添加位置:
所以这个:
vec1.insert(count, tempVec);
应该是
vec1.insert(vec1.begin() + count, tempVec);