简体   繁体   中英

How to convert 2D array into Vector

 For example: [ticket.txt] (Number) (Amount) 09 10 13 15 25 21 

This is my code:

#include <iostream>
#include <fstream>

using namespace std;
int main()
{
    int rowNumber = 0;
    ifstream inFile, inFile2;
    string line;
    inFile.open("Ticket.txt"); //open File
    inFile2.open("Ticket.txt");
    if (inFile.fail()) // If file cannot open, the code will end
    {
        cout << "Fail to open the file" << endl;
        return 1;
    }

    while (getline(inFile2, line)) //  get whole lines and two valid numbers(numbers and amounts)
        ++rowNumber;
    cout << "Number of lines in text file: " << rowNumber << "\n";


    int myArray[rowNumber][2]; //declare 2d array
        for(int i = 0; i < rowNumber; i++)
            for(int j = 0; j < 2; j++)
                inFile >> myArray[i][j];
}

My code is running well, but I want to convert a 2d array into vector. While reading file by arrays has a fixed size, so vector is a good solution to solve this problem.

Given your file structure you can read lines into a temporary vector and then insert it into a vector of vectors:

#include <iostream>
#include <fstream>
#include <vector>
int main(){
    std::ifstream myfile("Tickets.txt");
    std::vector<int> temprow(2);
    std::vector<std::vector<int>> matrix{};
    int rowcount = 0;
    while (myfile >> temprow[0] >> temprow[1]){
        matrix.push_back(temprow);
        rowcount++;
    }
    for (int i = 0; i < rowcount; i++){
        for (int j = 0; j < 2; j++){
            std::cout << matrix[i][j] << ' ';
        }
        std::cout << std::endl;
    }
}

This assumes your 2D array is N * 2.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM