STLコンテナvector使用法に関するレコード-更新を継続


STL容器の使い方をまとめると、前にノートにメモしておきました.一度家に帰ると、ノートを家に置いて、持っていませんでした.STLに関する多くの知識を忘れてしまった.そのため、これからすべてのノートをブログに移します.後で自分で使うためにノートをめくることができます.
第一節:vectorのノート
vectorを使ってみると、これは動的配列です.あなたのニーズに合わせて拡張できます.
使用方法:
#include 
#include 
#include 

int main()
{

	std::vector V;//V 
	std::vector W(10,2);//W , 10 2;
	std::vector WW(W);// W WW 

	V.push_back(1);	// V 1
	V.push_back(2);
	W.push_back(3);
	W.push_back(4);
	V.pop_back();// 
	std::cout << V.size() << std::endl;
	std::cout << W.size() << std::endl;
	//vector 
	W[2] = 10;

	// V 
	int k;
	for (int i = 0; i < 3; ++i)
	{
		std::cin >> k;
		V.push_back(k);
	}
	for (auto x : V)//c++11 
	{
		std::cout << x << " ";
	}
	std::cout << std::endl;

	for (auto x : WW)
	{
		std::cout << x << " ";
	}
	std::cout << std::endl;
	for (std::vector::size_type i = 0; i != W.size(); ++i)// vector 
	{
		std::cout << W[i] << " ";
	}
		// vector 
	for (int q = 5; q > 0; q--)
	{
		//std::cin >> m >> n;
		std::vector<:vector> > vecInt(q+1, std::vector(q+2));
		for (int i = 0; i < q+1; ++i)
		{
			for (int j = 0; j < q+2; ++j)
			{
				vecInt[i][j] = i + j;
			}
		}
		for (int i = 0; i < q+1; ++i)
		{
			for (int j = 0; j < q+2; ++j)
			{
				std::cout << "vecInt[" << i << "][" << j << "] = " << vecInt[i][j] << "  \t";
			}
			std::cout << std::endl;
		}
		std::cout << std::endl;
	}
	

	return 0;
}




#include 
#include 

int main()
{
    std::vector Vint(10,0);
    auto it = Vint.begin();
    it+=4;  // 4 , 0 
    Vint.insert(it,9);      // 
    //Vint.assign(2,8);       // ,2 8 Vint ,  8 8
    Vint[2] = 8;       //2 8
    std::cout << Vint.size() << std::endl;//Vint 11

    for(auto i =0; i < Vint.size(); ++i)
    {
        std::cout << Vint[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

vectorで動的に2次元配列を申請して、関数にまたがって使用して、C++クラスの中で応用します


vec.hヘッダファイル
#ifndef __VEC_H__
#define __VEC_H__

#include 
#include 
#include 
typedef struct DW // , , 
{
	std::vector<:vector> > vecInt;// 
}dw,*pDW;
class DWT// 
{
public:
	void vec(pDW);// 
	void init();// 
	pDW getVec() { return pdw; };// ( )
private:
	pDW pdw;// 
};


#endif // !__VEC_H__



main関数
#include "vec.h"

int main()
{
	// vector 
	
	//std::cin >> m >> n;
	DWT dwt;// 
	dwt.init();// 
	dwt.vec(dwt.getVec());// 
	return 0;
}

init.cpp
#include "vec.h"

void DWT::init()
{
	int n , m;
	std::cin >> n >> m;

	pdw = new dw;// 
	pdw -> vecInt = std::vector<:vector> >(n, std::vector(m));// vector 
	//c https://www.cnblogs.com/feifanrensheng/p/8711601.html
	for (std::vector::size_type i = 0; i != pdw->vecInt.size(); ++i)// 
	{
		for (std::vector::size_type j = 0; j != pdw->vecInt[i].size(); ++j)
		{
			pdw->vecInt[i][j] = i + j;
		}
	}
}

vec.cpp
#include 
#include 
#include "vec.h"

void DWT::vec(pDW)// 
{
	for (std::vector::size_type i = 0;i != pdw->vecInt.size(); ++i)
	{
		for (std::vector::size_type j= 0;j != pdw->vecInt.size(); ++j)
		{
			std::cout << "vecInt[" << i << "][" << j << "] = " << pdw -> vecInt[i][j] << "  \t";
		}
		std::cout << "vecInt[i] " << pdw->vecInt[i].size() << "  " << "vecInt " << pdw->vecInt.size();
		std::cout << std::endl;
	}
	std::cout << std::endl;
}

このようなスパン関数は2次元配列を用いて実現される.