C++使用STL 把有序序列 生成 随机序列
2010-05-14 15:01
239 查看
请看下面的例子
以上例子中因使用了模板,所以可以对各种类型进行随机排序。
以上例子中展示了C++,通过使用STL可以简单的实现随机序列,体现了STL的强大。
ptrdiff_t myrandom(ptrdiff_t i){return rand()%i;} ptrdiff_t (*p_myrandom)(ptrdiff_t)=myrandom;//此处定义一个函数指针,指向产生随机数的方法函数 template<typename T> void vrand(vector<T> &v,ptrdiff_t (*p_myrandom)(ptrdiff_t)) //这里定义一个模板函数,它可以把一个有序序列变成随机序列 { if(p_myrandom==NULL) { random_shuffle(v.begin(),v.end());//此处调用STL中的模板函数产生随机序列 } else { random_shuffle(v.begin(),v.end(),p_myrandom);//此处调用STL中的模板函数产生随机序列,并多一个参数,产生随机数的方法类 } } int vrandtest() { vector<char> vi; vector<char>::iterator vp; srand(unsigned(time(NULL))); //此处一定要,因为它重新产生一个随机种子,后面的随机序列才会改变,否则,每次产生的随机序列都是一样的 for(int i =0;i<10;i++) vi.push_back(i+'a'); for(vp=vi.begin();vp!=vi.end();++vp) cout << *vp << " "; cout << endl; vrand<char>(vi,myrandom);//此处调用模板函数生成随机序列 for(vp=vi.begin();vp!=vi.end();++vp) cout << *vp << " "; cout << endl; }
以上例子中因使用了模板,所以可以对各种类型进行随机排序。
以上例子中展示了C++,通过使用STL可以简单的实现随机序列,体现了STL的强大。
相关文章推荐
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- 使用STL的next_permutation函数生成全排列(C++)
- 编程珠玑: 13章 搜索 13.2使用链表结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
- 使用STL的next_permutation函数生成全排列(C++)
- C++中防止STL中迭代器失效——map/set等关联容器——vector/list/deque等序列容器—如何防止迭代器失效—即erase()的使用
- 使用STL的next_permutation函数生成全排列(C++)
- 编程珠玑: 13章 搜索 13.2使用线性结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
- 编程珠玑: 13章 搜索 13.4使用整数结构,生成[0 ,maxval]范围内m各随机整数的有序序列 -------解题总结
- 使用STL的next_permutation函数生成全排列(C++)
- 使用线性同余法生成伪随机数/序列(C++实现)
- 使用STL的next_permutation函数生成全排列(C++)
- C++复习之STL(二)——谈一谈关联式容器set和有序vector的使用选择问题
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- C++中防止STL中迭代器失效__map/set等关联容器vector/list/deque等序列容器_如何防止迭代器失效_即erase()的使用
- 使用STL的next_permutation函数生成全排列(C++)
- 使用STL的next_permutation函数生成全排列(C++)
- 使用STL的next_permutation函数生成全排列(C++)
- 使用STL的next_permutation函数生成全排列(C++)
- Effective C++ Item 6 若不想使用编译器自动生成的函数,就该明确拒绝
- C++文本查询程序 C++Primer练习12.28 使用vector,map,set容器保存来自文件的数据并生成查询结果