STL next_permutation全排列 assign 复制

头文件:

#include<algorithm>


函数原型:

bool next_permutation(iterator start, iterator end);

next_permutation函数的返回值是布尔类型


例1:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<algorithm>  
  3. using namespace std;  
  4. int main(){  
  5.     string str="abc";  
  6.     while(next_permutation(str.begin(),str.end()))  
  7.         cout<<str<<endl;  
  8.     return 0;  
  9. }  

输出:



例2:

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include<iostream>  
  2. #include<algorithm>  
  3. #include<vector>  
  4. using namespace std;  
  5. int main(){  
  6.     vector<int> dp;  
  7.     dp.push_back(1);  
  8.     dp.push_back(2);  
  9.     dp.push_back(3);  
  10.     while(next_permutation(dp.begin(),dp.end())){  
  11.         cout<<dp[0]<<dp[1]<<dp[2]<<endl;  
  12.     }  
  13.     return 0;  
  14. }  

输出:



next_permutation()函数功能是输出所有比当前排列大的排列,顺序是从小到大。

prev_permutation()函数功能是输出所有比当前排列小的排列,顺序是从大到小。




vector::assign //用来构造一个vector的函数,类似于copy函数
void assign( size_type _Count, const Type& _Val);

//_Count指要构造的vector成员的个数,   _Val指成员的数值,他的类型必须与vector类型一致! 
template<class InputIterator> 
void assign( InputIterator _First, InputIterator _Last ); 
//两个指针,分别指向复制开始和结束的地方! 
EXAMPLE
// vector_assign.cpp
// compile with: /EHsc
#include <vector>
#include <iostream>

int main( )
{
   using namespace std;
   vector<int> v1, v2, v3;
   vector<int>::iterator iter;

   v1.push_back(10);
   v1.push_back(20);
   v1.push_back(30);
   v1.push_back(40);
   v1.push_back(50);

   cout << "v1 = " ;
   for (iter = v1.begin(); iter != v1.end(); iter++)
       cout << *iter << " ";
   cout << endl;

   v2.assign(v1.begin(), v1.end());
   cout << "v2 = ";
   for (iter = v2.begin(); iter != v2.end(); iter++)
       cout << *iter << " ";
   cout << endl;

   v3.assign(7, 4) ;
   cout << "v3 = ";
   for (iter = v3.begin(); iter != v3.end(); iter++)
       cout << *iter << " ";
   cout << endl;
}
输出结果为:
v1 = 10 20 30 40 50 
v2 = 10 20 30 40 50 
v3 = 4 4 4 4 4 4 4 

Another: http://www.cplusplus.com/reference/stl/vector/assign/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值