valarray數值,簡單介紹

來源:互聯網
上載者:User

valarray可能大家都不是很熟悉,下面簡單介紹一下:(下表是常用函數,跟cmath類似)

1valarray在valarray標頭檔裡,下面是valarray的構造與輸出

#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 valarray<int>val(a,10);
 val[4]=10086;
 for(int i=0;i<10;++i){
  cout<<val[i]<<" ";
 }
 cout<<endl;
 valarray<int>vv(10);
 vv=val;
 for(int j=0;j<10;++j){
  cout<<vv[j]<<" ";
 }
 
 cout<<endl;
 system("pause");
 return 0;
}

 

2幾個valarray常用的函數
#include<iostream>
#include<valarray>
#include<string>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10};
 valarray<int>su(a,10);
 for(int i=0;i<10;++i){
  cout<<su[i]<<" ";
 }
 cout<<endl;
 cout<<su.max()<<endl;
 cout<<su.min()<<endl;
  cout<<su.sum()<<endl;
 system("pause");
 return 0;
}

 

apply函數

#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int jiayi(int a){
 return ++a;
}
int main(){
 int a[]={10,20,30,40,50,60,70,80,90,100};
 valarray<int>v1(a,10);
 valarray<int>v2=v1.apply(jiayi);

 for(int i=0;i<10;++i){
  cout<<v2[i]<<" ";
 }
 cout<<endl;

 system("pause");
 return 0;
}

 

shift(+)左移,shift(-)右移,非迴圈移動,用0來填補
#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int main(){
 int a[]={10,20,30,40,50};
 valarray<int>val(a,5);
 valarray<int>va;
 int i;
 for(i=0;i<5;++i){
  cout<<val[i]<<" ";
 }
 cout<<endl;
 va=val.shift(2);
 for(i=0;i<5;++i){
  cout<<va[i]<<" ";
 }
 cout<<endl;
 va=val.shift(-2);
 for(i=0;i<5;++i){
  cout<<va[i]<<" ";
 }
 cout<<endl;
  system("pause");
 return 0;
}

 

cshift(+)左移,cshift(-)右移,迴圈移動
#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int main(){
 int a[]={10,20,30,40,50};
 valarray<int>val(a,5);
 valarray<int>va;
 va=val.cshift(2);
 for(int i=0;i<5;++i){
  cout<<va[i]<<" ";
 }
 cout<<endl;
 va=val.cshift(-2);
 for(int j=0;j<5;++j){
  cout<<va[j]<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

絕對值
#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int main(){
 int a[]={10,-5,2,-3,7};
 valarray<int>v(a,5);
 for(int i=0;i<5;++i){
  cout<<v[i]<<" ";
 }
 cout<<endl;
 valarray<int>vv=abs(v);
 for(int j=0;j<5;++j){
  cout<<vv[j]<<" ";
 }
 cout<<endl;
 system("pause");
 return 0;
}

 

slice切割函數,第一個參數是開始地址,第二個參數是元素個數,第三個參數是步長
#include<iostream>
#include<string>
#include<valarray>
using namespace std;
int main(){
 int a[]={1,2,3,4,5,6,7,8,9,10,11,12};
 valarray<int>v(a,12);
 valarray<int>vv=v[slice(2,3,4)];
 cout<<"slice(2,3,4)"<<endl;
 for(int i=0;i<vv.size();++i){
  cout<<vv[i]<<" ";
 }
 cout<<endl;

 system("pause");
 return 0;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.