
//class和typename都可以用来定义模版类型
template<class + 自定义的类型名,typename + 自定义的类型名>
//vector的使用
std::vector<int> /*按需实例化,编译器自动将模版类型替换该类型*/ v(初始化值);
//没有初始化值时,不需要加(),不然编译器分不清这是函数,还是类对象。
//最好的初始化是使用{}(花括号),这样编译器默认只是一个变量
//当然{}中可以像数组那样写出多个值。
std::vector<int> v{ };
std::cout << v[0] << std::endl;//class和typename在tmeplate的声明中是一样的,混着用都没关系
template<class T,class T1 = int>
//
template<typename T,typename T2 = double>template<class T>
void swap(T& tmp1,T& tmp2)
{
T tmp = tmp1;
tmp1 = tmp;
tmp2 = tmp;
}
int main()
{
int a = 11 , b = 13;
swap<int>(a , b);
return 0;
}#include<iostream>
//vector的头文件
//为了与C语言作区分,不加.h后缀
#include<vector>
int main()
{
std::vector<int> v;
//尾插一个数据
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
std::vector<int>::reverse_iterator it = v.rbegin();
while (it != v.rend())
{
std::cout << *it << " ";
++it;
}
//不可访问,end()、rend(()函数都是从
//std::cout << *(v.end()) << std::endl;
//不论是reverse_iterator还是iterator
//都是从正向或是反向的位置相加、减,前置后置加加、减减。
std::vector<int>::reverse_iterator it = v.rbegin();
while (it != v.rend())
{
std::cout << *it << " ";
++it;
}
//std::cout << *(v.end()) << std::endl;
return 0;
}//初始化,当然也可以不加小括号,直接就大括号
std::vector<int> v({1,2,3,4,5,6});
std::vector<int>::const_iterator it = v.begin();
while (it != v.end())
{
std::cout << *it << " ";
++it;
}//这里用int类型做个示范
vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
//这里用string做一个示范
vector<string> vs;
vs.push_back("ABC");
vs.push_back("ABC");
vs.push_back("ABC");
vs.push_back("ABC");std::vector<int> v{ 1,3,4 };
v.insert(v.begin() + 1, 2);
//注意迭代器失效的问题
for (auto e : v)
{
std::cout << e << " " ;
}
std::cout << std::endl;
//注意end()、rbegin()都是顺序表之外的位置
//end()是末尾位置的下一个位置。
//rbegin()是开头的上一个位置。
v.erase(v.end() - 1);
for (auto e : v)
{
std::cout << e << " ";
}//迭代器更新,insert会自动返回插入位置的迭代器
std::cout << std::endl;
std::vector<int> v1{ 1,3,4 };
std::vector<int>::iterator it = v1.begin() + 1;
it = v1.insert(it, 2);
while (it != v1.end())
{
std::cout << *it << " ";
++it;
}
//错误示例:
std::cout << std::endl;
std::vector<int> v1{ 1,3,4 };
std::vector<int>::iterator it = v1.begin() + 1;
v1.insert(it, 2);
while (it != v1.end())
{
std::cout << *it << " ";
++it;
}std::vector<int> v{ 1,3,4 };
for(int i = 0;i < v.size();++i)
{
std::cout << v[i] << " ";
}std::vector<int> v{ 1 , 2 , 3 , 4 }
std::vector<int> v1 = v;