#include <iostream>
#include <vector>
#include <algorithm> //for_each
#include <ctime>
using namespace std;
void STRConstructor() //初始化,輸入
{
vector<int> vec(5,12);
//cout << vec << endl; 錯誤
vector<int> vec1(5);
for(int i=0;i<5;i++)
cout << vec1[i] << endl;
vector<int> vec3(vec); //vector<char>就不行,<>中間必須相同
//cout << vec3 << endl; 錯誤
vector<int>::iterator ite=vec3.begin();
vector<int>::iterator ite1=vec3.end();
vector<int> vec4(ite,ite1);
//cout << vec4 << endl; 錯誤
for(int i=0;i<3;i++)
cout << vec4[i] << endl;
}
void strcapacity()
{
vector<int>vec(3);
vector<int>vec2();
//cout << vec.empty() << '\n' << vec2.empty() << endl; //報錯?vec2
vec.reserve(10);
cout << vec.size() << vec.capacity() << endl;
vec.resize(2); //重新設定元素個數
cout << vec.size() << vec.capacity() << endl;
//vector<int> vec1(5);
//vec1.push_back(1);
//vec1.push_back(1); //不同編譯器,效果不同 vs現有容量的一半
//cout << vec1.capacity() << endl;
//重新申請空間會使迭代器失效0
}
void fun(int i) //不能用模板
{
cout << i << ' ';
}
void output() //輸出
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
cout << vec[i] << vec.at(i) <<endl;
}
cout << vec.back() << endl;
vector<int>::iterator ite=vec.begin();
for(;ite!=vec.end();ite++)
{
cout << *ite << endl;
}
for_each(vec.begin(),vec.end(),fun);
}
void operation() //操作函式
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(i); //尾添加
}
//vec.insert(vec.begin()+3,12);
//vec.insert(vec.begin()+2,3,3);
//vec.insert(vec.begin()+3,vec1.begin(),vec1.begin()+2);
vec.pop_back(); //尾洗掉
//vec.erase(vec.begin()+3);
//vec.erase(vec.begin()+3,vec.end());
//vec.swap(vec1,vec);
cout << (vec<vec1) << endl;
for_each(vec.begin(),vec.end(),fun);
}
void algorithm() //需要頭檔案include<algorithm>
{
vector<int>vec;
vector<int>vec1(5,5);
for(int i=0;i<10;i++)
{
vec.push_back(10-i); //尾添加
}
for_each(vec.begin(),vec.end(),fun);
sort(vec.begin(),vec.end());
for_each(vec.begin(),vec.end(),fun);
sort(vec.begin(),vec.end(),greater<int>()); //include<functional>
for_each(vec.begin(),vec.end(),fun);
}
void supplement() //補充
{
vector<int>vec;
for(int i=0;i<10;i++)
{
vec.push_back(i);
}
vector<int>vec1(8,14);
//vec.assign(vec1.begin(),vec1.end()); //清除以前的,從新賦值
//vec.assign(3,0); //清除以前的,從新賦值
//vec.clear();
srand((unsigned int)time(0)); //真正的隨機
random_shuffle(vec.begin(),vec.end()); //隨機亂序
for_each(vec.begin(),vec.end(),fun);
cout << endl;
random_shuffle(vec.begin(),vec.end());
for_each(vec.begin(),vec.end(),fun);
cout << endl;
}
int main()
{
vector<int> vec;
//STRConstructor();
//strcapacity();
//output();
//operation();
//algorithm();
//supplement();
return 0;
}
/*
vector 固定的空間 常用
array
valarray cmath.h -- C語言中的操作函式,與計算有關
*/
/*
vector 可以放string 結構體 指標 物件 其他容器的物件
array
valarray //有很多數學函式 他里邊有一個cmath.h函式的封裝
*/
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/64977.html
標籤:C++
上一篇:stl_string復習
下一篇:stl_list復習
