【C++】複数ファイル && Vector入出力

入出力でつまづいた

csvファイルから読み込んだ値をvectorに入れようと思ったら、意外とめんどくさかった。 あとは、以下の点で地味につまづいた。
・複数ファイルに分けたコードの実行が久々だった
Vectorの受け渡しがよく考えたら参照渡しでないといけなかった

main.cpp

#include <fstream>
#include <string>
#include <sstream>
#include <vector>
#include <iostream>
#include "sub.h"


std::vector<std::string> split(std::string& input, char delimiter)
{
    std::istringstream stream(input);
    std::string field;
    std::vector<std::string> result;
    while (getline(stream, field, delimiter)) {
        result.push_back(field);
    }
    return result;
}

int main()
{
    int n = 4;
    std::ifstream ifs("data.csv");
    std::string line;
    std::vector<int> v;

    while (std::getline(ifs, line)) {

        std::vector<std::string> strvec = split(line, ',');

        for (int i=0; i<strvec.size();i++){
            v.push_back(std::stoi(strvec[i]));
        }
    }
    for(auto itr=v.begin(); itr<v.end(); itr++){
        std::cout << *itr << std::endl;
    }
    numnum(v, n);
    for(auto itr=v.begin(); itr<v.end(); itr++){
        std::cout << *itr << std::endl;
    }
}

sub.cpp

#include <vector>
#include <iostream>

void numnum(std::vector<int> &v, int n){
    std::vector<int>* cpv = &v; // アドレスコピー
    for(int i = 0; i < (*cpv).size(); ++i){
        (*cpv)[i] += n;
    }
}

sub.h

#ifndef STUDY_TEST_SUB_H
#define STUDY_TEST_SUB_H

void numnum(std::vector<int> &v, int n);

#endif //STUDY_TEST_SUB_H

参考

qiita.com