C++真是一门深奥的语言。在接触视频编解码代码的过程中,本科课堂上的内容是较难以应付的。尽管编译时大概能弄懂语句的含义,但系统学习一下对加深印象还是有很大的帮助。
为了弄懂容器的常用操作,这里以vector为例进行学习。可以将代码复制到开发环境并debug单步运行来加深理解。
#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;//不用标准库将无法使用VECTOR及一些算法
int main()
{
/******* 定义的方法 ********/
vector<int> prepare1 { 10,56,87,92,31 }; //列表初始化
vector<int> prepare2 (5,88); //拷贝初始化
vector<int> prepare3;
vector<int> nums;
vector<int> temp;
/******* 赋值操作 *******/
swap(prepare1, prepare2); //.swap()函数
if (prepare3.empty()) //.empty()函数
{
prepare3 = prepare1; //拷贝替换(不是初始化)
prepare3 = { 24,99,78,86,45 }; //替换(不是初始化)
}
for (int i = 0; i < prepare1.size(); i++)
{ // 常用: .size()函数 及 .push_back函数
nums.push_back(prepare1[i]);
nums.push_back(prepare2[i]);
nums.push_back(prepare3[i]);
}
temp.assign(nums.begin(),nums.end()); //assign函数复制
/******* 部分泛型算法 ********/
fill(nums.begin(), nums.end(), 0); //填充算法
copy(temp.begin(), temp.end(), nums.begin()); //复制算法
replace(nums.begin(), nums.end(), 88, 66); //替换算法
sort(nums.begin(), nums.end()); //排序算法
auto end_unique =
unique(nums.begin(), nums.end()); //消除重复算法*************1
/****** vector函数 ******/
nums.erase(end_unique, nums.end()); //.erase()函数
nums.resize(7); //.resize()函数
nums.insert(nums.begin() + 6, 25); //.insert()函数
nums.pop_back(); //.pop_back()函数
nums.emplace_back(100); //.emplace_back()函数*****************2
//上面1和2放在一起:nums.erase( unique( nums.begin(), nums.end() ), nums.end() );可以清除相同元素
/******* 迭代器用法 ******/
for (vector<int>::iterator ite = nums.begin(); ite != nums.end(); ite++) //迭代器的用法,当做指针
{
cout << *ite << ' ';
}
cout << endl;
cout << nums.capacity() << endl; //.capacity()函数
cout << nums.at(5) <<endl; //.at()函数
cout << nums.max_size() << endl; //.max_size()函数
system("pause");
return 0;
}