【总结】OJ练习,进行的一些编程语言方面总结
1.STL vector只有四个构造函数
default (1) explicit vector (const allocator_type& alloc = allocator_type()); fill (2) explicit vector (size_type n, const value_type& val = value_type(), const allocator_type& alloc = allocator_type()); range (3) template <class InputIterator> vector (InputIterator first, InputIterator last, const allocator_type& alloc = allocator_type()); copy (4) vector (const vector& x);
第一个是默认构造函数,参数为内存分配器。
第二个是fill类型构造函数,参数为n个vector元素类型的val值。
第三个是范围的构造函数,参数为[first,last)的左闭右开范围区间。
第四个是复制构造函数,参数当然为const vector &了。
2.STL二维数组的构建。如 vector<vector<int> > vec;
应该只有如下方法:
vector a1; a1.push_back(1); a1.push_back(2); a1.push_back(3); vector a2; a2.push_back(2); a2.push_back(3); a2.push_back(4); vec.push_back(a1); vec.push_back(a2);
所以,初始化一个二维数组是很麻烦的。好像用vector的话,没有更简便的方法了。最多就是,把a1和a2的初始化用范围构造函数,参数为已定义的数组名及数组名+长度
3.有符号数和无符号数进行运算时,有符号数隐式转换为无符号数。如 int 转换为 unsigned int。
4.multiset的插入是insert操作,删除是erase操作,遍历和取值是迭代器、没有下标操作符[]。