1.数组、列表类
1. 列表初始化
vector<int> nums //没有分配内存
vector<int> nums(list) //将 list 赋值到 nums
vector<int> nums={1,2,3…} //直接赋值
vector<int> nums(7,2) //有7个元素,每个元素为2.(nums(7)表示有7个元素,但是没有赋值。)
2.列表数值插入
insert()
v.insert(v.begin(),8);//在最前面插入新元素。
v.insert(v.begin()+2,1);//在迭代器中第二个元素前插入新元素
v.insert(v.end(),3);//在向量末尾追加新元素
参考:
c++ insert
push_back()
vector.push_back(line)
//在后面插入
2. 常用的 STL 函数
1. 排序函数: sort()
功能
:对容器进行排序。
PS
:适用于:array、vector、deque 三种容器。
#include < algorithm>
//necessary file
sort(myvector.begin(), myvector.begin() + 4, greater<int>());
// 第三个参数可选,默认为升序排列。
sort(myvector.begin(), myvector.begin() + 4, less<int>());
//降序
reverse(vi.begin(),vi.end()); /// 从大到小
//或者 reverse 函数。
时间复杂度为:
nlog
2
(
n
)
n\log_2(n)
n
lo
g
2
(
n
)
。
参考
:
1.
C++ sort()排序函数用法详解
2.
自定义排序函数
2. 排序+合并:merge()函数
功能:
对排序规则一致的序列进行组合排序。
#include < algorithm>
//necessary file
//该数组中存储有 2 个有序序列
int first[] = { 5,10,15,20,25,7,17,27,37,47,57 };
//用于存储新的有序序列
vector<int> myvector(11);
//将 [first,first+5) 和 [first+5,first+11) 合并为 1 个有序序列,并存储到 myvector 容器中。
merge(first, first + 5, first + 5, first +11 , myvector.begin());
//1,2 指标指代第一个有序数组,3,4指代第二个,5代表重排之后存贮的数组。
//将 [first,first+5) 和 [first+5,first+11) 合并为 1 个有序序列。inplace_merge 存储在first 数组中。
inplace_merge(first, first + 5,first +11);
参考:
c++ merge() 用法
3. 查找:find()
底层代码:
template<class InputIterator, class T>
InputIterator find (InputIterator first, InputIterator last, const T& val)
{
while (first!=last) {
if (*first==val) return first;
++first;
}
return last;
}
调用的是
//在 vector 中找 30
it = find(myvector.begin(), myvector.end(), 30)
cout<<*it<<endl; //输出的是其it点上的内容。
//return 找到的位置,即指针
参考
:
C++ find()函数用法详解
4. 交换:swap()
swap(a,b)
// 交换 a b 的位置。