C++學習總結(九)——C++數組array vector tuple

C++新類型數組:

1.array靜態數組大小在定義時固定,位於棧上。  

#include<iostream>
#include<array>
#include<string>
void main1()
{
	double db[4] = {1.1,2.2,3.3,4.4};
	std::array<double,3> dbnew = { 10.1,10.2,10.3 };
	for (auto a:dbnew)
	{
		std::cout <<a<< std::endl;
	}
	std::cin.get();
}
void main()
{
	std::array<std::string, 4> string1 = { "calc","notepad","tasklist","ipconfig" };
	std::string str1, str2;
	std::string str3 = str1 + str2;
	for (auto a:string1)
	{
		std::cout << a << std::endl;
		system(a.c_str());
	}
	std::cin.get();
}

    

2. vector動態數組大小可變,位於堆上,可以通過接口函數進行刪改。 用於管理不規則的樹狀結構,實現動態無規則,內存連續。 

3. tuple靜態數組,包含不同的類型,類型固定後必須賦值爲相應的類型。

#include<iostream>
#include<tuple>
#include<string>
using namespace std;
void main()
{
	tuple<string, int, double > mytuple("Guodong",18,99.9);
	cout<<get<0>(mytuple)<<' '<< get<1>(mytuple) <<' '<< get<2>(mytuple);

	cin.get();
}

#include<iostream>
#include<array>
#include<vector>
#include<string>
#include<stdlib.h>
using std::array;
using std::vector;
using std::string;
void main1()
{
	array<int, 3> myint = { 1,2,3 };//靜態數組 位於棧上
	//array<int, 1024 * 256> myint1;//棧溢出 超過1M
	vector<double> mydb;//動態數組 位於堆上
	for (int i=0;i < 1024 * 1024;i++)
	{
		mydb.push_back(i);//
	}
	std::cin.get();
}
void main2()	//cpp新數組,多維數組
{
	array<int, 3> myint1 = { 1,2,3 };
	array<int, 3> myint2 = { 4,5,6 };
	array<int, 3> myint3 = { 7,8,9 };
	array<array<int, 3>, 3> myint = {myint1,myint2,myint3};
	for (int i = 0;i < 3;i++)
	{
		for (int j = 0;j < 3;j++)
		{
			std::cout << myint[i][j] <<' ';
		}
		std::cout << std::endl;
	}
	std::cin.get();
}
void main3()	//字符串數組
{
	vector<string> string1 ;
	string1.push_back("notepad");
	string1.push_back("calc");
	string1.pop_back();//刪除一個
	/*for (int i = 0;i < string1.size(); i++)
	{
		system(string1[i].c_str());
	}*/
	for (auto i : string1)
	{
		system(i.c_str());
	}
	
	std::cin.get();
}
void main4()	//迭代器
{
	vector<string> string1;
	string1.push_back("notepad");
	string1.push_back("calc");
	vector<string>::iterator ibegin, iend;//創建指針
	ibegin = string1.begin(); //開始
	iend = string1.end();  //結尾
	for (;ibegin!= iend;ibegin++)
	{
		string temp = *ibegin;
		system(temp.c_str());
	}

	std::cin.get();
}
void main5()//arry數組迭代器
{
	array<int, 3> ary = { 1,2,3 };
	array<int, 3>::iterator ibegin, iend;
	ibegin = ary.begin();
	iend = ary.end();
	for (;ibegin != iend;ibegin++)
	{
		
		std::cout<<*ibegin<<' ';
	}
	array<int, 3>::reverse_iterator rbegin, rend; //反向迭代器
	rbegin = ary.rbegin();
	rend = ary.rend();
	for (;rbegin != rend;rbegin++)
	{

		std::cout << *rbegin << ' ';
	}
	std::cin.get();
}
void main6()	//string反向迭代器
{
	vector<string> string1;
	string1.push_back("notepad");
	string1.push_back("calc");
	vector<string>::reverse_iterator rbegin, rend;//創建指針
	rbegin = string1.rbegin(); //開始
	rend = string1.rend();  //結尾
	for (;rbegin != rend;rbegin++)
	{
		string temp = *rbegin;
		system(temp.c_str());
	}

	std::cin.get();
}
#include<iostream>
#include<vector>
#include<algorithm>
void main1()
{
	std::vector<int> myint;
	myint.push_back(100);
	myint.push_back(200);
	myint.push_back(300);	
	int sum=0;
	//數據累加,res等價於函數返回值
	std::for_each(myint.begin(), myint.end(), [&sum](int x) {sum += x;});
	std::cout << sum;
	std::cin.get();
}

void main2()// vector增刪查改
{
	std::vector<int> myvector(5);// 分配5個空間,默認爲0
	myvector.push_back(100);
	myvector.push_back(200);
	myvector.push_back(300);
	//myvector.pop_back(); 
	myvector.erase(myvector.begin() + 6);//根據迭代器的位置刪除
	for (int i = 0;i < myvector.size();i++)
	{
		std::cout << myvector.at(i) << std::endl;
	}
						   
	std::cin.get();
}
void main3()//二維動態數組
{
	std::vector<int> vector1;
	vector1.push_back(11);
	vector1.push_back(12);

	std::vector<int> vector2;
	vector2.push_back(21);
	vector2.push_back(22);

	std::vector<int> vector3;
	vector3.push_back(31);
	vector3.push_back(32);
	vector3.push_back(33);

	std::vector<std::vector<int>> allvector;
	allvector.push_back(vector1);
	allvector.push_back(vector2);
	allvector.push_back(vector3);

	for (int i = 0;i < allvector.size();i++)
	{
		for (int j = 0;j < allvector[i].size();j++)
		{
			std::cout << allvector[i][j]<<' ';
		}
		std::cout << std::endl;
	}
	std::cin.get();
}

#include<iostream>
#include<map>
void main(void)//參數爲空  多元數組,tuple必須是一個靜態數組
{
	int int1 = 100;
	double double1 = 9.8;
	char ch = 'A';
	char *str = "hellochina";
	decltype(int1) int2;
	const int num = 2;
	std::tuple<int,double,char,const char*>  mytuple(int1,double1,ch,str);
	std::cout << std::get<0>(mytuple) << '\n';
	std::cout << std::get<1>(mytuple) << '\n';
	std::cout << std::get<2>(mytuple) << '\n';
	std::cout << std::get<3>(mytuple) << '\n';
	std::cout << std::get<num>(mytuple);//只能是常量
	std::cout << typeid(std::get<0>(mytuple)).name() << '\n';

	std::cin.get();
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章