C++菜鳥の道(三)Vectorの使用とcsvファイルの読み書き
c++ではvectorは非常に有用なコンテナであり,一般的な配列に比べて挿入や削除が容易であり,クエリー関連の情報やクリアが容易である.
(1) #include.
(2) vector ,vector vec;
(3) :vec.push_back(a);
(4) ,cout<
vector<int>::iterator it;
for(it=vec.begin();it!=vec.end();it++)
cout<//
(6) : vec.insert(vec.begin()+i,a); i+1 a;
(7) : vec.erase(vec.begin()+2); // 3
vec.erase(vec.begin()+i,vec.end()+j); [i,j-1]; 0
(8) :vec.size(); //
(9) :vec.clear(); //
Vectorの関連アルゴリズムの使用
reverse要素を反転
#include
reverse(vec.begin(),vec.end());
sortソート
昇順配列
#include,
sort(vec.begin(),vec.end()); //
降順配列
bool Comp(const int &a,const int &b)
{
return a>b;
}
sort(vec.begin(),vec.end(),Comp);
vector
2 D Vectorは1つの2 D配列に相当し、まず1つのvectorを組み立て、周辺のVectorに加えるだけでよい.
std::vector<std::vector<std::string>>& vAllRow
while( r )
{
std::vector<std::string> vRow;
vRow.clear();
vRow.push_back(r[0]);
vRow.push_back(r[1]);
vRow.push_back(r[2]);
vRow.push_back(r[3]);
vRow.push_back(r[4]);
vRow.push_back(r[5]);
vAllRow.push_back(vRow);
}
データはvAllRowに格納されており、次に読み込んだデータを表示します
vector<vector<std::string>>::iterator item2v = vAllRow.begin();
while(item2v !=vAllRow.end())
{
vector<std::string>::iterator item = (*item2v).begin();
while(item != (*item2v).end())
{
cout<"\t";
item++;
}
std::cout<<std::endl;
item2v++;
}
ファイル処理とVectorアプリケーション
主にファイルに情報を記録して読み取る試みで、その間にvectorが使われています
#include
#include
#include //
#include
#include
using namespace std;
int main()
{
//
ofstream outFile;
outFile.open("data.csv", ios::out);
outFile << "name" << ',' << "age" << ',' << "hobby" << endl;
outFile << "Mike" << ',' << 18 << ',' << "paiting" << endl;
outFile << "Tom" << ',' << 25 << ',' << "football" << endl;
outFile << "Jack" << ',' << 21 << ',' << "music" << endl;
outFile.close();
//
ifstream inFile("data.csv", ios::in);
string lineStr;
vector< vector<string> > strArray; //vector string
while(getline(inFile, lineStr)) // inFile , lineStr
{
cout<< lineStr<stringstream ss(lineStr); // ss ,
string str;
vector<string> lineArray;
//
while(getline(ss, str, ',')) // ss , “,” ss str
{
lineArray.push_back(str); // line Array
cout<< str<return 0;
}
まとめ
:
(1) vector vec vector.begin() ,
vector.end() , vector.push_back(str) , vector.clear()
(2) vector < vector < string> > Vec; // Vector,
(3) vector<:string>::iterator item = (*item2v).begin(); // vector iterator ,
。 *item, *item++ 。
(4) : //
ofstream outFile;
outFile.open("data.csv", ios::out); //
outFile << "name" << ',' << "age" << ',' << "hobby" << endl;
outFile.close();
(5) :
ifstream inFile("data.csv", ios::in);
lineArray.push_back(str);
(6)
#include
cout<