c++学习基础代码
文章平均质量分 59
落冰翼
这个作者很懒,什么都没留下…
展开
-
C++四种强制转换
C++的四种强制类型转换,所以C++不是类型安全的。分别为:static_cast , dynamic_cast , const_cast , reinterpret_cast为什么使用C风格的强制转换可以把想要的任何东西转换成合乎心意的类型。那为什么还需要一个新的C++类型的强制转换呢?新类型的强制转换可以提供更好的控制强制转换过程,允许控制各种不同种类的强制转换。C++中风格是stat转载 2015-11-11 15:13:52 · 342 阅读 · 0 评论 -
STL算法 -------- 重排算法、分区算法
1. random_shuffle() 随机打乱2. partition() 不稳定的3. stable_partition() 稳定的#include #include #include #include #include using namespace std;template void Prin原创 2015-03-10 12:40:59 · 677 阅读 · 0 评论 -
堆排序,C++模板编程
链接:http://www.cnblogs.com/hanxi/archive/2012/10/12/2721540.html理论来自:简明现代魔法在程序设计相关领域,堆(Heap)的概念主要涉及到两个方面:一种数据结构,逻辑上是一颗完全二叉树,存储上是一个数组对象(二叉堆)。 垃圾收集存储区,是软件系统可以编程的内存区域。本文所说的堆,指的是前者。堆排序的时间复杂度是O(转载 2015-03-17 17:52:02 · 1119 阅读 · 0 评论 -
STL算法 -------- 填充新值
1. fill(b, e, v)2. fill_n(b, n, v)3.generate(b, e, p )4.generate_n(b, n, p)#include #include #include #include #include #include #include #include using namespace std;int main(原创 2015-03-09 13:54:22 · 361 阅读 · 0 评论 -
STL算法 -------- 删除算法3
1. unique( b, e ) //删除连续的重复的数据。留下唯一2. unique( b, e, p )3. unique_copy( b1, e1, b2 )4. unique_copy( b1, e1, b2, p )注意: 1.应该有一个unique_if(), 但是没有 2.应该有一个unique_co原创 2015-03-09 18:55:45 · 394 阅读 · 0 评论 -
STL算法 ---------- 交换
1. swap_ranges(b, e, b2)2.注意:下列两种方法也是交换算法 (1) 容器的swap() 成员函数 (2) 赋值操作#include #include #include #include using namespace std;int main( int argc, char** argv ){ ve原创 2015-03-09 12:33:02 · 452 阅读 · 0 评论 -
STL算法 -------- 排列组合
1. next_permutation() 原始数据为升序2. prev_permutation() 原始数据为降序#include #include #include using namespace std;int main( int argc, char** argv ){ vector vec; vec.push_ba原创 2015-03-10 11:56:45 · 1256 阅读 · 0 评论 -
STL算法 -------- 删除算法1
1. remove()2. remove_if()注意: 1.并不是真正的删除,而是把后面的元素向前移动,覆盖被删除元素 2.返回新的逻辑终点#include #include #include #include using namespace std;template void Print( const T& t ){ fo原创 2015-03-09 18:09:56 · 372 阅读 · 0 评论 -
STL算法 ------- transform()
1. transform() 算法有两种形式: transform( b1, e1, b2, op ) transform( b1, e1, b2, b3, op )注意: 如果目标与源相同,transform() 就和for_each() 一样 如果想以某值替换符合规则的元素,应使用replace() 算法#inc原创 2015-03-06 18:20:25 · 727 阅读 · 0 评论 -
STL算法 ------- transform() 与 for_each()比较
1. for_each() 速度快 不灵活(只能对一个容器的某个区间进行操作)2. transform() 速度慢 非常灵活(可以对多个容器的多个区间操作)#include #include #include using namespace std;void PrintVec( vector& vec ){ for(vector::原创 2015-03-06 18:45:47 · 541 阅读 · 0 评论 -
STL算法 ------- 复制元素(Copying)
1.copy()2.copy_backward()3.注意: (1) 没有copy_if()算法,可以使用remove_copy_if() 算法 (2) 复制过程中要逆转元素次序,使用 reverse_copy() 算法 (3) 把容器内所有元素赋值给另一个容器,要用赋值操作符或容器的assign()成员 (原创 2015-03-05 18:14:00 · 395 阅读 · 0 评论 -
STL算法------查找7(已序容器)
1.lower_bound() 第一个可能的位置2.upper_bound() 最后一个可能的位置3.equal_range() 查找第一个和最后一个可能的位置***注意:关联式容器有等效的成员函数,性能更佳#include #include #include #include using namespace st原创 2015-03-04 16:19:23 · 463 阅读 · 0 评论 -
STL算法 -------- 对所有元素排序
1. sort( b, e)2. sort( b, e, p )3. stable_sort( b, e )4. stable_sort( b, e, p )注意: 不适用于list容器,list有成员函数sort#include #include #include #include #include #include using namesp原创 2015-03-10 14:07:59 · 353 阅读 · 0 评论 -
STL算法------for_each
1. for_each( b, e, p )2 使用for_each() 算法遍历数据3. 使用for_each() 和函数对象修改数据4. 使用for_each() 的返回值#include #include #include using namespace std;void print(int elem){ cout<<elem<<' ';}template原创 2015-03-04 17:50:11 · 399 阅读 · 0 评论 -
c++ 重载运算符
#include using namespace std;class CTmp{ public: //friend const CTmp operator++(CTmp& tmp); //friend const CTmp operator++(CTmp& tmp, int); CTmp(int iflag=0):i(iflag) { } void print(原创 2015-06-12 16:36:02 · 360 阅读 · 0 评论 -
erase用法注意事项
以前就发现了vector中的erase方法有些诡异(^_^),稍不注意,就会出错。今天又一次遇到了,就索性总结一下,尤其是在循环体中用erase时,由于vector.begin() 和vector.end()是变化的,因此就引入了错误的可能性。erase的函数原型有两种形式:iterator erase(iterator position);iterator erase(iterato转载 2015-03-24 17:17:51 · 2312 阅读 · 0 评论 -
堆排序详解
一、堆的定义堆的定义如下:n个关键字序列L[n]成为堆,当且仅当该序列满足:①L(i) = L(2i)且L(i) >= L(2i+1) 其中i属于[1, n/2]。满足第①种情况的堆称为小根堆(小顶堆),满足第②种情况的堆称为大根堆(大顶堆)。在大根堆中,最大元素存放在根结点中,且对任一非根结点,它的值小于或等于其双亲结点值。小根堆则恰恰相反,小根堆的根结点存放的是最小元素。二原创 2015-03-13 12:22:24 · 597 阅读 · 0 评论 -
STL算法 ---------- Heap算法
---- 堆排序算法( heapsort )2. make_heap()2. push_heap()3. pop_heap4. sort_heap() #include #include #include using namespace std;原创 2015-03-10 18:07:06 · 300 阅读 · 0 评论 -
STL算法-------简介
1. 100多种算法2.函数对象(function objects )3.函数适配器(function adapters )4.三个头文件 #include #include #include 预定义函数对象 negate() plus() minus() multiplies() divides() modulus原创 2015-03-03 14:18:16 · 301 阅读 · 0 评论 -
STL算法 ------ 根据第n个元素排序
1. nth_element( b, n, e ) 对n位置的元素进行比较,大的放后面,小的放前面,n必须是迭代器指向输入的元素;2. nth_element(b, n, e, p )3.对比:partition() 算法#include #include #include #include #include #include #include us原创 2015-03-10 16:51:52 · 415 阅读 · 0 评论 -
STL算法 ------ 局部排序
1. partial_sort( b, se, e )2. partial_sort( b, se, e, p )3. partial_sort_copy( sb, se, db, de )4. partial_sort_copy( sb, se, db, de, p )#include #include #include #include #include #incl原创 2015-03-10 15:09:06 · 519 阅读 · 0 评论 -
STL算法 -------- 逆转和旋转
1. reverse()2. reverse_copy()3. rotate()4. rotate_copy()#include #include #include #include using namespace std;template void Print(const T& t){ for(typename T::const_iterator itr原创 2015-03-10 11:36:08 · 580 阅读 · 0 评论 -
c++内部排序算法
#include using namespace std;/* *> * 为了实现N个数的排序,将后面N-1个数依次插入到前面已排好的子序列中, *假定刚开始第1个数是一个已排好序的子序列。经过N-1趟就能得到一个有序序列。 *****时间复杂度:最好情况O(n),最坏情况O(n^2),平均情况O(n^2). *****空间复杂度:O(1) *****稳定性:稳定 */voi原创 2015-03-17 18:48:52 · 466 阅读 · 0 评论 -
STL算法 -------- 删除算法2
1. remove_copy()2. remove_copy_if()#include #include #include #include #include #include using namespace std;template void Print( const T& t ){ for(typename T::const_iterator itr=t原创 2015-03-09 18:30:15 · 316 阅读 · 0 评论 -
STL算法 -------- 替换算法
1. replace( b, e, ov, nv )2. replace_if( b, e, p, v )3.replace_copy( b1, e1, b2, ov, nv )4.replace_copy_if(b1, e1, b2, p, v )#include #include #include #include using namespace std;temp原创 2015-03-09 17:13:48 · 379 阅读 · 0 评论 -
STL算法------查找6(二分查找,包含查找)
已序查找算法之 ----------1. binary_search(b, e, v ) --只能找一个; 找到或没找到,不能返回位置2. binary_search(b, e, v, p )3. include(b, e, sb, se )4. include(b, e, sb, se, p )#include #in原创 2015-03-04 15:38:09 · 351 阅读 · 0 评论 -
STL算法 ------- 区间的比较
1. equal(b, e, b2) 比较第一个容器和第二个容器内容是否相等2. equal( b, e, b2, p )3. mismatch( b, e, b2 ) 查找两个容器中第一个不相等的数据4. mismatch(b, ,e, b2, p )5. lexicographical_compare( b,原创 2015-03-05 15:36:45 · 366 阅读 · 0 评论 -
STL算法------查找5
1. adjacent_find(b, e) //找两个连续相等的2. adjacent_find(b, e, p )#include #include #include using namespace std;bool doubled( int val1, int val2 ){ return val1*2 == val2;}原创 2015-03-04 15:02:04 · 301 阅读 · 0 评论 -
string----------只适用于string操作
1.三个substr重载函数2.六个append重载函数3.十个replace重载函数#include #include using namespace std;int main( int argc, char **argv ){ string s("hello world"); string s2 = s.substr(6,5); cout<<s2<<endl;原创 2015-03-02 15:59:20 · 355 阅读 · 0 评论 -
string------构造
string s string s(s2) string s("value") string s(n, 'c') string s(b, e) string s(cp, n) string(s2, pos2) string(s2, pos2, len2)#include #include using namespace std;int main(){原创 2015-03-02 14:25:08 · 298 阅读 · 0 评论 -
string----------查找
s.find(args) 严格匹配查找s.rfind(args) 严格匹配查找s.find_first_of(args, pos) 查找任意匹配字符,从pos开始找, s.find_last_of(args, pos)s.find_first_not_of(args) 查找任意不匹原创 2015-03-02 16:48:43 · 389 阅读 · 0 评论 -
c++分割字符串
c++分割字符串#include #include #include #include using namespace std;int ParseString( vector& vecSave, const char* pszSrc, const char* pszSplit ){ assert( NULL != pszSrc ); assert( NULL != pszSp原创 2015-02-28 14:04:12 · 474 阅读 · 0 评论 -
stl操作4
容器大小的操作 c.size() c.max_size() c.empty() c.resize(n) c.resize(n,t)注意:resize操作可能会是迭代器失效#include #include #include #include using namespace std;int main( int argc, char原创 2015-02-28 14:39:07 · 341 阅读 · 0 评论 -
stl操作1
vector为例#include #include #include #include using namespace std;int main( int argc, char** argv ){ //char* a[] = { "zhang", "yang", "hua"}; //cout<<a[0]<<endl; vector vec; list lst; dequ原创 2015-02-28 12:50:13 · 318 阅读 · 0 评论 -
stl操作2
1.在顺序容器中添加元素 2.容器元素都是副本3.添加元素可能会是迭代器失效4.避免存储end操作返回的迭代器#include #include #include #include #include using namespace std;int main( int argc, char** argv ){ vector svec; list slst; d原创 2015-02-28 13:56:16 · 368 阅读 · 0 评论 -
stl--------deque
#include #include #include using namespace std;int main( int argc, char ** argv ){ deque deq; deq.push_back(4); deq.push_back(5); deq.push_back(6); deq.push_front(3); d原创 2015-02-28 12:46:36 · 278 阅读 · 0 评论 -
STL顺序容器操作7
1.赋值与交换( swap ) c1 = c2 c1.swap( c2 ) c.assign( b, e ) c.assign( n, t )2.使用assign: 类型兼容即可3.使用swap : 类型必须相同#include #include #include #include #include u原创 2015-02-28 18:08:24 · 307 阅读 · 0 评论 -
stl操作3
1.关系运算符2.所有的容器类型都可以使用3.比较的容器必须具有相同的容器类型4.容器的比较是基于容器内元素的比较5.容器内元素必须有相应的关系运算符#include #include #include #include using namespace std;class Dog{ //成员省略 //必须要>,>=,<,<=,==, !=};int mai原创 2015-02-28 14:23:58 · 315 阅读 · 0 评论 -
STL顺序容器操作6
删除元素 c.erase(p) c.erase(b,e) //包括前面,不包括后面 c.clear() c.pop_back() c.pop_front()注意:c.pop_front() 只适用于 list和deque容器#include #include #include #include #include #include原创 2015-02-28 17:44:08 · 337 阅读 · 0 评论 -
string------修改
s.insert( itr, t ) s.insert(pos, n, c) s.insert( itr, n, t ) s.insert(pos, s2) s.in原创 2015-03-02 15:25:34 · 392 阅读 · 0 评论