亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? goodtutorialonc++templateforbeginners.txt

?? 給c++初學(xué)者一個用于科學(xué)計(jì)算的好例子
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
-Good tutorial on C++ Template for beginnersC++寫的通用矩陣類CMatrix
關(guān)鍵詞: 矩陣    矩陣運(yùn)算    數(shù)值方法                                           

     在編寫數(shù)值計(jì)算的時候經(jīng)常會用到矩陣和矩陣相關(guān)的操作,每次都從重新寫,煩不勝煩,在前些日子在編寫程序計(jì)算高速飛行器再入大氣層時翼粱受熱的溫度場時,寫了一個通用的矩陣類CMatrix,封裝了常用的一些算法,還有很多算法,暫時沒空寫。

CMatrix類的基本功能:

1.內(nèi)存管理一律根據(jù)實(shí)際需要的大小在堆中動態(tài)分配內(nèi)存。

2.邊界檢查。如果數(shù)組下標(biāo)超越了數(shù)組大小界限,會給出警告信息,可以防止非法內(nèi)存訪問以及方便程序的調(diào)試。

3.重載了+,-,*,+=,-=,數(shù)乘等常見運(yùn)算符;

4.可以保存數(shù)組為二進(jìn)制數(shù)據(jù)文件和文本文件兩種形式,也可以從二進(jìn)制數(shù)據(jù)文件和文本文件讀取數(shù)據(jù)到數(shù)組。

5.實(shí)現(xiàn)了和矩陣相關(guān)的線性代數(shù)方程組求解算法。一是高斯選主元消去法二是針對三對角矩陣的追趕法。

6.靜態(tài)函數(shù)Bspline3():3次B樣條曲線插值算法。

頭文件Matrix.h;

// Matrix.h: interface for the CMatrix class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MATRIX_H__E7F9EF3A_5FEB_41C3_B3A4_C909D4E45F02__INCLUDED_)
#define AFX_MATRIX_H__E7F9EF3A_5FEB_41C3_B3A4_C909D4E45F02__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "math.h"
#include "afxtempl.h"

#define DOUBLE double

class CMatrix : public CObject  
{
 //構(gòu)造函數(shù);
public:
 CMatrix(const CMatrix& m);
 CMatrix();
 CMatrix(int row,int col);
 CMatrix(DOUBLE dbArrary[],int n,BOOL bAsRow);
 
 //運(yùn)算符重載;
 DOUBLE& operator()(int i, int j);
 CMatrix operator+(const CMatrix& M);
 CMatrix operator+(const DOUBLE& x);
 void operator+=(const CMatrix& M);
 CMatrix operator-(const CMatrix& M);
 CMatrix operator-(const DOUBLE& x);
 void operator-=(const CMatrix& M);
 CMatrix operator=(const CMatrix& M);
 CMatrix operator*(const CMatrix& M);
 CMatrix operator*(const DOUBLE& x);
 
 void Diag(DOUBLE a, DOUBLE b, DOUBLE c);
 void Draw(CDC* pDC,CPoint Pos=CPoint(0,0));
 virtual ~CMatrix();
 void Serialize(CArchive& ar);
 
protected:
 int nRow;//行數(shù);
 int nCol;//列數(shù);
 DOUBLE** Val;
 void allocMemory(int m,int n);
 void freeMemory(void);
 void reallocm(int row,int col);
private:
 //void GetParam(DOUBLE Vx[],DOUBLE Vy[],int n,DOUBLE* h,DOUBLE* f,DOUBLE* u,DOUBLE* r,DOUBLE* ff,DOUBLE*d);
 int findMainElem(int row);
 void exchangeRow(int i,int j);
 
public:
 BOOL LoadMatrix();
 BOOL LoadMatrix(CString strPath);
 int GetColSize();
 int GetRowSize();
 void GetSize(int& m,int& n);
 void SetSize(int row,int cor);
 BOOL SaveMatrix(CString strPath,BOOL bAscii=true); 
 BOOL SaveMatrix(BOOL bAscii=true);
 
 static DOUBLE* Bspline3(DOUBLE xi[], int m,DOUBLE Vx[], DOUBLE Vy[], int n);
 static DOUBLE Bspline3(DOUBLE xi,DOUBLE Vx[],DOUBLE Vy[],int n);
 
 BOOL ReadMatrix(char c=' ');
 BOOL ReadMatrix(CString strFilePath,char c=' ');
 void chase_EQ(DOUBLE* pb);
 void GSElimin_EQ(DOUBLE* pb,DOUBLE TOL=1e-6);
 void Multiply(DOUBLE a);
 void SetValue(DOUBLE a);
 

    //DOUBLE max(DOUBLE a,DOUBLE b);
 
protected:
 
 DECLARE_SERIAL(CMatrix)
};

#endif // !defined(AFX_MATRIX_H__E7F9EF3A_5FEB_41C3_B3A4_C909D4E45F02__INCLUDED_)


 

實(shí)現(xiàn)文件:Matrix.cpp;

// Matrix.cpp: implementation of the CMatrix class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Matrix.h"
#include "math.h"
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
IMPLEMENT_SERIAL(CMatrix,CObject,1)

void GetA(DOUBLE* u,DOUBLE* r,DOUBLE* d,CMatrix& A)
{
 int i,j;
 i=A.GetRowSize();
 
 A(0,0)=2;A(0,1)=r[1];
 for(j=1;j<=i-2;j++)
 {
  A(j,j)=2;
  A(j,j-1)=u[j+1];
  A(j,j+1)=r[j+1];
 }
 A(i-1,i-1)=2;A(i-1,i-2)=u[i];
 
}
void GetParam(DOUBLE Vx[], DOUBLE Vy[], int n, DOUBLE *h, DOUBLE *f, DOUBLE *u, DOUBLE *r, DOUBLE *ff, DOUBLE *d)
{
 
 int i;
 
 for(i=0;i<=n-2;i++)
 {
  h[i]=Vx[i+1]-Vx[i];
  f[i]=(Vy[i+1]-Vy[i])/h[i];
 }
 
 for(i=1;i<=n-2;i++)
 {
  u[i]=h[i-1]/(h[i-1]+h[i]);
  r[i]=1-u[i];
  ff[i]=(f[i-1]-f[i])/(Vx[i-1]-Vx[i+1]);
  d[i]=6*ff[i];
 }
}

CMatrix::CMatrix()
{
 nRow=0;
 nCol=0;
 Val=NULL;
 //這一句初始化非常重要,如果不初始化,Val的值是隨機(jī)值;
 //初始化之后,可以方便以后判斷是否已經(jīng)分配過內(nèi)存;
}

CMatrix::CMatrix(int row,int col)
{
 nRow=row;
 nCol=col;
 Val=new DOUBLE* [nRow];
 VERIFY(Val!=NULL);
 for(int i=0;i<nRow;i++)
 {
  Val[i]=new DOUBLE [nCol]; 
  VERIFY(Val!=NULL);
 }
}

CMatrix::CMatrix(DOUBLE dbArray[],int n,BOOL bAsRow)
{
 int i;
 if(bAsRow)
 {
  nRow=1;
  nCol=n;
  
  Val=new DOUBLE* [nRow];
  VERIFY(Val!=NULL);
  for(i=0;i<nRow;i++)
   Val[i]=new DOUBLE [nCol];
  
  for(i=0;i<=n-1;i++)
   Val[0][i]=dbArray[i];
 }
 else
 {

  nRow=n;
  nCol=1;
  
  Val=new DOUBLE* [nRow];
  for( i=0;i<nRow;i++)
   Val[i]=new DOUBLE [nCol];
  
  for(i=0;i<=n-1;i++)
   Val[i][0]=dbArray[i];
 }
}

CMatrix::~CMatrix()
{
 if(Val!=NULL)
 {
  for(int i=0;i<nRow;i++)
  {
   delete [] Val[i];
   Val[i]=NULL;
  }
  delete [] Val;
  Val=NULL;
 }
 
}

//拷貝構(gòu)造函數(shù);
CMatrix::CMatrix(const CMatrix &m)
{
 nRow=m.nRow;
 nCol=m.nCol;
 
 Val=new DOUBLE* [nRow];
 for(int i=0;i<nRow;i++)
 {
  Val[i]=new DOUBLE [nCol];
  memcpy(Val[i],m.Val[i],nCol*sizeof(DOUBLE));
 } 
}

void CMatrix::Serialize(CArchive &ar)
{
 CObject::Serialize(ar);
 if(ar.IsStoring())
 {
  ar<<nRow<<nCol;
  for(int i=0;i<nRow;i++)
  {
   for(int j=0;j<nCol;j++)
   {
    ar<<Val[i][j];
   }
  }
 }
 else
 {
  int row,col;
  ar>>row>>col;
  SetSize(row,col);
  for(int i=0;i<row;i++)
  {
   for(int j=0;j<col;j++)
   {
    ar>>Val[i][j];
   }
  }
 }
}

void CMatrix::Draw(CDC *pDC, CPoint Pos)
{
 char ch[200];
 CString str;
 for(int i=0;i<nRow;i++)
 {
  for(int j=0;j<nCol;j++)
  {
   
   //if(fabs(Val[i][j])>1e3 || fabs(Val[i][j]<1e-3))
   //sprintf(ch,"%0.3e",Val[i][j]);
   //else
   sprintf(ch,"%8.3lf",Val[i][j]);
   pDC->TextOut(Pos.x+90*j,Pos.y+20*i,ch);
  } 
 } 
}

DOUBLE& CMatrix::operator()(int i, int j)
{
 if(i>=nRow||j>=nCol)
 {
  AfxMessageBox("** 警告:數(shù)組越界! **");
  exit(0);
 }
 return Val[i][j];
}

void CMatrix::SetSize(int row, int col)
{
 //重新設(shè)置數(shù)組的大小;原有的保持不變;增加的置0;
 int i,j,oldRow,oldCol;
 oldRow=nRow;
 oldCol=nCol;
 if(nRow!=row || nCol!=col)
  reallocm(row,col);
 
 if((row>oldRow)&&(col<=oldCol))//行增大,列減小;
 {
  for(int i=oldRow;i<row;i++)
   for(int j=0;j<col;j++)
    Val[i][j]=0.0;
 }
 if((col>oldCol)&&(row<=oldRow))//列增大,行減小;
 {
  for(i=0;i<row;i++)
   for(j=oldCol;j<col;j++)
    Val[i][j]=0.0;
 }
 
 if(row>oldRow && col>oldCol)//行,列均增大;
 {
  for(i=oldRow;i<row;i++)
  {
   for(j=0;j<col;j++)
    Val[i][j]=0.0;
  }
  for(i=0;i<oldRow;i++)
   for(j=oldCol;j<col;j++)
    Val[i][j]=0.0;
 }
}

void CMatrix::reallocm(int row, int col)
{
 //重新調(diào)整矩陣大小;
 //如果矩陣擴(kuò)大,原矩陣與新矩陣對應(yīng)位置的值不變,擴(kuò)大部分的值為隨機(jī)值;
 //如果矩陣減小,對應(yīng)位置的值保持不變;
 if((this->nRow)==row && (this->nCol)==col)
  return;
 
 DOUBLE** Val1=new DOUBLE* [row];
 for(int i=0;i<row;i++)
  Val1[i]=new DOUBLE[col];
 
 int colSize=min(nCol,col)*sizeof(DOUBLE);
 int minRow=min(nRow,row);
 for(i=0;i<minRow;i++)
  memcpy(Val1[i],Val[i],colSize);
 
 for(i=0;i<nRow;i++)
  delete [] Val[i];
 delete [] Val;
 
 nRow=row;
 nCol=col;
 Val=Val1;
 return;
}

CMatrix CMatrix::operator+(const CMatrix& M)
{
 
 if(nRow==M.nRow && nCol==M.nCol)
 {
  CMatrix s(nRow,nCol);
  for(int i=0;i<nRow;i++)
   for(int j=0;j<nCol;j++)
    s.Val[i][j]=this->Val[i][j]+M.Val[i][j]; 
   return s; 
 }
 else
 {
  AfxMessageBox("不滿足數(shù)組相加的條件");
  exit(0);
 }
}

CMatrix CMatrix::operator+(const DOUBLE& x)
{
 
 CMatrix s(nRow,nCol);
 for(int i=0;i<nRow;i++)
  for(int j=0;j<nCol;j++)
   s.Val[i][j]+=x; 
  return s;
}

void CMatrix::operator+=(const CMatrix& M)
{
 if(M.nRow==nRow && M.nCol==nCol)
 {
  for(int i=0;i<nRow;i++)
   for(int j=0;j<nCol;j++)
    Val[i][j]+=M.Val[i][j];
 }
 else
 {
  AfxMessageBox("數(shù)組維數(shù)不相等,不能相加");
  exit(0);
 }
 
}

CMatrix CMatrix::operator-(const CMatrix& M)
{
 
 if(nRow==M.nRow && nCol==M.nCol)
 {
  CMatrix s(nRow,nCol);
  for(int i=0;i<nRow;i++)
   for(int j=0;j<nCol;j++)
    s.Val[i][j]=this->Val[i][j]-M.Val[i][j]; 
   return s; 
 }
 else
 {
  int r=max(nRow,M.nRow);
  int c=max(nCol,M.nCol);
  
  CMatrix a(*this);
  CMatrix b(M);
  
  a.SetSize(r,c);
  b.SetSize(r,c);
  CMatrix s(r,c);
  for(int i=0;i<r;i++)
  {
   for(int j=0;j<c;j++)
    s.Val[i][j]=a.Val[i][j]-b.Val[i][j]; 
  }
  return s;
 }
}

CMatrix CMatrix::operator-(const DOUBLE& x)
{
 CMatrix s(nRow,nCol);
 for(int i=0;i<nRow;i++)
  for(int j=0;j<nCol;j++)
   s.Val[i][j]-=x;
  return s;
}
void CMatrix::operator-=(const CMatrix& M)
{
 if(M.nRow==nRow && M.nCol==nCol)
 {
  for(int i=0;i<nRow;i++)
   for(int j=0;j<nCol;j++)
    Val[i][j]-=M.Val[i][j];
 }
 else
 {
  AfxMessageBox("數(shù)組維數(shù)不相等,不能相減");
  exit(0);
 }
}

CMatrix CMatrix::operator*(const CMatrix& M)
{
 
 if(nCol==M.nRow)
 {
  CMatrix s(nRow,M.nCol);
  
  for(int i=0;i<nRow;i++)
  {
   for(int j=0;j<M.nCol;j++)
   {
    s.Val[i][j]=0;
    for(int k=0;k<nCol;k++)
     s.Val[i][j]+=Val[i][k]*M.Val[k][j];
   }
  }
  return s;
 }
 else
 {
  AfxMessageBox("數(shù)組維數(shù)不滿足相乘條件");
  exit(0);
 }
}


//重載矩陣乘以常數(shù)的運(yùn)算;
//注意:不能寫成“常數(shù)乘以矩陣”的形式;
//即:常數(shù)必須在矩陣后面;
CMatrix CMatrix::operator*(const DOUBLE& x)
{
 CMatrix s(nRow,nCol);
 for(int i=0;i<nRow;i++)
  for(int j=0;j<nCol;j++)
   s.Val[i][j]=Val[i][j]*x;
  return s;
  
}

CMatrix CMatrix::operator=(const CMatrix& M)
{
 
 if(this==&M)
  return *this;
 if(this->nCol==M.nCol && this->nRow==M.nRow)
 {
  for(int i=0;i<nRow;i++)
   for(int j=0;j<nCol;j++)
    Val[i][j]=M.Val[i][j];
   return *this;
   
 }
 else
 {
  AfxMessageBox("數(shù)組維數(shù)不相等,不能用=賦值");
  exit(0);
 }
}

void CMatrix::SetValue(DOUBLE a)
{
 for(int i=0;i<nRow;i++)
  for(int j=0;j<nCol;j++)
   Val[i][j]=a;
}

void CMatrix::Multiply(DOUBLE a)
{
 for(int i=0;i<nRow;i++)
  for(int j=0;j<nCol;j++)
   Val[i][j]=Val[i][j]*a;
}

 


void CMatrix::Diag(DOUBLE a, DOUBLE b, DOUBLE c)
{
 int i;
 if(nRow==nCol)
 {
  this->Multiply(0.0);
  Val[0][0]=b;Val[0][1]=c;
  Val[nRow-1][nRow-1]=b;Val[nRow-1][nRow-2]=a;
  for(i=1;i<=nRow-2;i++)
  {
   Val[i][i]=b;
   Val[i][i-1]=a;
   Val[i][i+1]=c;
  }
 }
 else
 {
  AfxMessageBox("** 只有方陣才能轉(zhuǎn)換為Diag標(biāo)準(zhǔn)形  **",MB_ICONSTOP);
  exit(0);
 }
}

//釋放數(shù)組中Val被分配的內(nèi)存;
void CMatrix::freeMemory()
{
 if(Val!=NULL)
 {
  for(int i=0;i<nRow;i++)
  {
   delete [] Val[i];
   Val[i]=NULL;
  }
  delete [] Val;
  Val=NULL;
 }
}

void CMatrix::chase_EQ(DOUBLE *pb)
{ 
 //只有三對角矩陣才可以使用此方法求解;
 ASSERT(nRow==nCol);
 if(nRow!=nCol)
 {
  AfxMessageBox("只有方陣才能用追趕法求解");
  exit(0);
 }
 
 DOUBLE* a=new DOUBLE[nRow];
 DOUBLE* b=new DOUBLE[nRow];
 DOUBLE* c=new DOUBLE[nRow];
 
 DOUBLE* u=new DOUBLE[nRow];
 DOUBLE* l=new DOUBLE[nRow];
 
 //a[0],c[nRow-1] 不能被使用
 b[0]=Val[0][0];
 c[0]=Val[0][1];
 int i;
 for(i=1;i<nRow-1;i++)
 {
  b[i]=Val[i][i];
  a[i]=Val[i][i-1];
  c[i]=Val[i][i+1];
 }
 a[nRow-1]=Val[nRow-1][nRow-1-1];
 b[nRow-1]=Val[nRow-1][nRow-1];
 u[0]=b[0];
 
 //l[0] useless;
 for(i=1;i<nRow;i++)
 {

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人午夜视频免费看| 欧美a级一区二区| 色哟哟在线观看一区二区三区| 专区另类欧美日韩| 91色综合久久久久婷婷| 一区二区三区四区中文字幕| 欧美日韩在线不卡| 欧美a级一区二区| 久久九九99视频| 91亚洲国产成人精品一区二三| 亚洲精品免费电影| 51午夜精品国产| 久久国产婷婷国产香蕉| 日本一区二区三区免费乱视频| 99精品久久久久久| 亚洲国产精品久久久久婷婷884| 欧美视频在线一区二区三区| 免费高清在线一区| 国产精品久久久久7777按摩| 在线视频欧美区| 欧美96一区二区免费视频| 久久久久久夜精品精品免费| 91麻豆免费看片| 日韩不卡在线观看日韩不卡视频| 久久精品一区二区三区四区| 色爱区综合激月婷婷| 免费成人你懂的| 国产精品第13页| 91麻豆精品91久久久久同性| 丁香天五香天堂综合| 午夜成人在线视频| 国产精品色在线| 欧美一区二视频| 99精品视频中文字幕| 麻豆91在线播放免费| 亚洲乱码国产乱码精品精可以看| 91精品综合久久久久久| 99精品国产99久久久久久白柏| 日韩不卡免费视频| 亚洲私人影院在线观看| 精品电影一区二区三区| 色成人在线视频| 成人av手机在线观看| 老司机免费视频一区二区三区| 亚洲色图欧美偷拍| 2020日本不卡一区二区视频| 欧美另类videos死尸| gogo大胆日本视频一区| 国产综合成人久久大片91| 亚洲午夜在线电影| 一区在线播放视频| 国产午夜精品理论片a级大结局| 欧美日韩高清影院| 色综合色狠狠天天综合色| 国产成人av电影在线| 激情欧美一区二区| 视频一区二区不卡| 一区二区三区欧美日韩| 国产精品福利电影一区二区三区四区| 日韩一区二区精品在线观看| 精品视频1区2区3区| 色香蕉成人二区免费| www.性欧美| 高清不卡一二三区| 国产福利一区在线| 国产在线视频精品一区| 美女看a上一区| 免费在线看成人av| 日韩福利视频导航| 免费在线观看一区二区三区| 日本免费新一区视频| 视频一区国产视频| 日av在线不卡| 久久精品噜噜噜成人88aⅴ| 日本va欧美va瓶| 久久成人麻豆午夜电影| 蜜桃视频免费观看一区| 日本成人在线视频网站| 美女脱光内衣内裤视频久久影院| 日本午夜精品视频在线观看 | 国产精品超碰97尤物18| 亚洲国产电影在线观看| 国产精品私人自拍| 国产精品短视频| 亚洲乱码日产精品bd| 一级精品视频在线观看宜春院 | 亚洲人成网站在线| 亚洲午夜私人影院| 日韩国产高清影视| 精品一区二区三区香蕉蜜桃| 国产麻豆日韩欧美久久| 国产精品综合在线视频| www.亚洲人| 欧美片网站yy| 精品国产91久久久久久久妲己| 26uuu久久天堂性欧美| 亚洲国产精华液网站w| 亚洲精品日日夜夜| 午夜伊人狠狠久久| 国产一区二区在线免费观看| 国产成人鲁色资源国产91色综| av在线一区二区| 欧美日本不卡视频| 26uuu国产电影一区二区| 国产精品乱码人人做人人爱| 一区二区久久久| 精品午夜一区二区三区在线观看 | 99免费精品视频| 欧美日韩国产小视频在线观看| 欧美一区二区三区性视频| 国产午夜精品一区二区三区四区| 亚洲男人的天堂网| 免费人成精品欧美精品| 99久久精品国产网站| 欧美一卡2卡3卡4卡| 中文在线资源观看网站视频免费不卡 | 成人伦理片在线| 91麻豆精品国产91久久久久久久久| 精品国产亚洲在线| 夜夜嗨av一区二区三区中文字幕| 久久爱另类一区二区小说| 91小视频在线观看| 欧美成人精品福利| 亚洲裸体xxx| 精品一区二区成人精品| 欧美在线不卡视频| 国产亚洲欧美色| 欧美a级理论片| 在线欧美一区二区| 国产嫩草影院久久久久| 蜜桃视频一区二区三区在线观看| 97久久超碰国产精品| 精品国产免费人成电影在线观看四季 | 人妖欧美一区二区| 99精品国产99久久久久久白柏| 精品sm在线观看| 午夜视频久久久久久| 99精品视频一区二区| 久久午夜国产精品| 日本怡春院一区二区| 在线免费观看不卡av| 亚洲国产激情av| 精品一区二区免费视频| 51精品视频一区二区三区| 一区二区三区中文字幕在线观看| 成人亚洲精品久久久久软件| 日韩一区二区在线看| 国产麻豆精品95视频| 欧美巨大另类极品videosbest | 国产麻豆成人精品| 亚洲va欧美va国产va天堂影院| 成人欧美一区二区三区视频网页| 欧美精品一区二区三区久久久| 日韩视频免费直播| 91精品国产综合久久久蜜臀粉嫩| 欧美午夜一区二区三区 | 欧美a一区二区| 麻豆久久久久久久| 肉丝袜脚交视频一区二区| 亚洲国产精品久久久久秋霞影院| 一级精品视频在线观看宜春院| 一区二区在线电影| 午夜不卡av在线| 国模无码大尺度一区二区三区| 国产精品一区二区久久不卡 | www.久久精品| 91亚洲国产成人精品一区二区三 | 国产精品一区二区免费不卡| eeuss鲁片一区二区三区| 不卡的av电影在线观看| 色婷婷av一区二区三区软件| 欧美日韩视频在线第一区| 在线成人av影院| 26uuu国产一区二区三区| 国产欧美精品一区aⅴ影院| 国产精品久线在线观看| 亚洲一区二区三区四区五区黄| 美女视频黄免费的久久| 国产酒店精品激情| 91国产成人在线| 91精品综合久久久久久| 中文字幕不卡的av| 亚洲高清在线精品| 国产成人亚洲综合色影视| 色一情一乱一乱一91av| 欧美大片拔萝卜| 亚洲欧洲三级电影| 免费成人美女在线观看.| 成人动漫一区二区| 91精品综合久久久久久| 国产精品电影院| 久久不见久久见中文字幕免费| 91视频国产观看| 精品国产91亚洲一区二区三区婷婷| 136国产福利精品导航| 美国毛片一区二区| 色综合久久久久综合体| 日韩美女视频在线| 亚洲一区二区精品久久av| 国产乱子轮精品视频|