将行插入2D矢量(矢量矢量)

时间:2016-11-29 23:01:09

标签: c++ vector

相对较新的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);

1 个答案:

答案 0 :(得分:1)

您收到编译器错误,因为count是一个整数,std::vector::insert的第一个参数是迭代器,而不是整数。

要使用迭代器到达向量中的某个位置,请使用vector::begin()迭代器并添加位置:

所以这个:

vec1.insert(count, tempVec);

应该是

vec1.insert(vec1.begin() + count, tempVec);