棧記憶體中建立:類似宣告變數
自定義型別名 物件名(引數列表);
student stu(); 相等 student stu;
在堆記憶體中建立:需要new關鍵字
student* p_stu1 = new student();
不要使用auto* p_stu3 = new student();大型專案會編譯時間過長問題
//c語言習慣
for (int i = 0; i < cards.size(); i++)
cout << endl;
*/
//c++習慣 使用迭代器
for (vector::const_iterator iter = cards.begin(); iter != cards.end(); iter++)
cout << endl;
//c++11標準
for(auto iter = cards.begin(); iter != cards.end(); iter++)
cout << endl;
//c++11另外一種寫法,for區間遍歷
for (auto card:cards)
cout << endl;
//使用演算法方式將容器內容複製到cout繫結的迭代器中,需要新增標頭檔案
//#include//#includecopy(cards.cbegin(), cards.cend(), ostream_iterator(cout, ","));
cout << endl;
//普通青年做for迴圈
bool landower::iscontains(int cardnum)
return false;
}}
//使用算查詢
vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);
if (iter == surpluscards.end())
return true;
或者:
vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);
return iter == surpluscards.end();
詳細描述
//普通青年做法刪除
for (auto iter = cardvec.begin(); iter != cardvec.end();)
else
}
//演算法刪除
vector::iterator iter = find(cardvec.begin(), cardvec.end(), card);
if (iter != cardvec.end())
main.cpp檔案
#include#include#include "class11.h"
using namespace std;
int main()
class11.**件
#pragma once
#include#include#include#include#includeusing namespace std;
class landower
void setname(string val)
string get***()
void set***(string val)
int getgod()
void setgod(int val)
long getexp()
void setexp(int val)
void touchcard(int cardcount);//摸牌
void showinfo();//
void initcards();//初始化packcards, surpluscards, currcards
void showcards(const vector&); //顯示牌面
private:
string m_name;
string m_***;
int m_god;
long m_exp;
vectorcardsvec;//當前玩家手牌陣列
vectorsurpluscards;//摸牌後桌面剩餘的牌
vectorpackcards;//預設的一副牌,從1-54
vectorcurrcards;//當前手牌
bool iscontains(int cardnum);//剩餘牌集合中是否包含cardnum
void deletecards(vector&, int); //刪除集合中數字
string getcolor(int);//獲得花色
string getvalue(int);//獲得牌面
};
class11.cpp檔案(函式具體實現)
#include "class11.h"
#include#includelandower::landower()
void landower::touchcard(int cardcount)
else
} cout << "地主摸牌,當前手牌如下:" << endl;
showcards(currcards);
cout << "地主摸牌後,剩餘手牌如下:" << endl;
showcards(surpluscards);
}void landower::deletecards(vector& cardvec, int card)
// else
//}//使用演算法刪除
vector::iterator iter = find(cardvec.begin(), cardvec.end(), card);
if (iter != cardvec.end()) }
bool landower::iscontains(int cardnum)
// return false;
//}//使用演算法查詢
vector::iterator iter = find(surpluscards.begin(), surpluscards.end(), cardnum);
/*if (iter == surpluscards.end())
return true;*/
return iter != surpluscards.end();
}landower::landower(string name) :m_name(name)
landower::landower(string name, string ***, int exp, long god): m_name(name), m_***(***), m_exp(exp), m_god(god)
void landower::showcards(const vector& cards)
cout << endl;
*/ //c++習慣 使用迭代器
//for (vector::const_iterator iter = cards.begin(); iter != cards.end(); iter++)
// //cout << endl;
c++11標準
//for(auto iter = cards.begin(); iter != cards.end(); iter++)
// //cout << endl;
//c++11另外一種寫法,for區間遍歷
for (auto card:cards)
void landower::showinfo()
void landower::initcards()//初始化packcards, surpluscards, currcards
currcards.clear();
}string landower::getcolor(int card)
; return colors[(card - 1) / 13];//card不是下標,所以要 -1
}string landower::getvalue(int card)
; return values[(card - 1) % 13];
}landower::~landower()
小白學習老九君C 筆記 4 string函式
這裡是引用 vector與string本質上都是stl內部的程式,是可以用insert來轉換的 include c 標準庫 using namespace std int main include stdc h c 標準庫 vs執行時候沒有找到c 標準庫,所以自己做了個標準庫檔案 標準庫標頭檔案內容...
C 學習筆記(九) 類的建構函式
建構函式 是特殊的成員函式,只要建立類型別的新物件,都要執行建構函式。建構函式的工作是保證每個物件的資料成員具有合適的初始值。如下面 class sales item 建構函式的一些特性 和類的名字一樣,沒有返回值,可以有形參,也可以沒有形參 建構函式的過載 但有個問題是,我們如何知道應該定義哪個或...
C 學習筆記九 類的定義與初始化
c 中,可以使用類來定義自己的資料型別,那麼如和理解自己的資料型別?比如我們常見的如 int float,char 等等諸如此類,這都是一種資料型別,那麼比如我自己想定義乙個叫 clock 的資料型別,裡面包含小時,分鐘,秒,並可以顯示出來,那麼我們就可以使用類來定義自己的資料型別 clock。定義...