关于c++标准库
- 分为四个部分:容器、迭代器、算法、仿函数
- 容器
- 顺序容器:数组、向量、双端队列、单向链表、双向链表
- 容器适配器:栈、队列、优先队列
- 关联容器:set、map、multiset、multimap
- 无序关联容器:unordered_set、unordered_map、unordered_miltiset、unordered_multimap
可变参数模板
- 允许写任意个数的模板参数,使用关键字typename…
- 语法将参数分为两部分,一个和一包
- 可以使用sizeof…(args),求包中参数的个数
void print()
{
}
template<typename T, typename... Types>
void print(const T& firstArg, const Types&... args)
{
cout<<firstArg<<endl;
print(args...);
}
print(7.5, "hello", bitset<16>(377), 42);
auto
- 由编译器推断元素类型,不必自己指定
- 不要全部都使用auto
- 第一点:在清楚变量类型时再使用auto
- 第二点:编译器无法推断变量类型时不使用auto
- auto传引用是auto&
- 是一种语法糖
list<string> c;
...
list<string>::iterator ite;
ite = find(c.begin(), c.end(), target);
list<string> c;
auto ite = find(c.begin(), c.end(), target);
list<string> c;
...
auto ite;
ite = find(c.begin(), c.end(), target);
范围for
for( decl : coll){
statement
}
for(int i : {1, 2, 3, 4, 5}){
cout<< i << endl;
}
vector<double> vec;
...
for( auto elem : vec){
cout << elem << endl;
}
for( auto& elem : vec){
elem *= 3;
}