實現sales_data
類
#include #include class sales_data
public:
sales_data() = default; //顯式宣告預設建構函式
sales_data(const std::string& book) :bookno(book){}
sales_data(std::istream& is)
private:
std::string bookno;
unsigned units_sold = 0;
double sellingprice = 0.0;
double saleprice = 0.0;
double discount = 0.0;
};//好習慣: 現將友元函式宣告
std::istream& operator >> (std::istream&, sales_data&);
std::ostream& operator << (std::ostream&, const sales_data&);
bool operator == (const sales_data&, const sales_data&);
//全域性函式.
inline bool compareisbn(const sales_data& lhs, const sales_data& rhs)
inline bool operator == (const sales_data& lhs, const sales_data& rhs)
inline bool operator != (const sales_data& lhs, const sales_data& rhs)
sales_data& sales_data::operator += (const sales_data& rhs)
sales_data operator + (const sales_data& lhs, const sales_data& rhs)
std::istream& operator >> (std::istream& in, sales_data& s)
std::ostream& operator << (std::ostream& out,const sales_data& s)
int main()
} std::cout << "有效彙總資訊: isbn,售出書本,原始**,實際**,折扣:" << total << std::endl;
} else
return 0;
}
sales_data() = default;
std::string isbn() const
sales_data& operator += (const sales_data&);
//用乙個函式代替過載+=的效果
sales_data& sales_data::combine(const sales_data &rhs)
//使用combine時,total繫結到this上,trans 繫結到 rhs上,
total.combine(trans);
定義型別成員,別名(alias
)作用範圍從定義開始
class screen ;
sales_data(std::string s = ""):bookno(s) {}
sales_data(std::string s,unsigned cnt,double sellp,double salep) : bookno(s),units_sold(cnt),sellingprice(sellp),saleprice(salep){}
sales_data() : sales_data("", 0, 0.0, 0.0) {}
sales_data(std::istream& is) :sales_data()
sales_data obj(); //錯誤,宣告了乙個返回值是sales_data的函式
sales_data obj; //呼叫預設構造
在需要使用sales_data
的地方,使用接收乙個引數的建構函式的引數型別作為替代,能隱式轉化成sales_data型別//如果:
class sales_data ;
string ss = "aaa";
total.combine(ss); //combine另乙個sales_data的物件,這裡用string物件替代
//編譯器用string物件建立了乙個sales_data物件,這個生成的sales_data臨時物件作為引數傳給combine
total.combine("dads"); //"dads"是c風格的字串 char,不是string物件
total.combine(string("abc")); //轉化成string
total.combine(sales_data("abc")); //直接轉化成sales_data物件
class sales_data
explicit sales_data(const std::string &s) : bookno(s) {}
explicit sales_data(std::istream&);
};
std::string temp = "acx";
sales_data item(temp);
sales_data item = temp; //拷貝形式,隱式轉換成sales_data
item.combine(sales_data(temp));
item.combine(static_cast(cin));
item.combine(static_cast(temp));
friend std::istream& operator >> (std::istream&, sales_data&);
friend std::ostream& operator << (std::ostream&,const sales_data&);
friend bool operator == (const sales_data&, const sales_data&);
std::istream& operator >> (std::istream& in, sales_data& s)
std::ostream& operator << (std::ostream& out,const sales_data& s)
kmeans聚類及Matlab實現
kmeans k均值聚類 是一種常用的聚類演算法,因其簡單且效能還算良好而受廣泛應用。kmeans聚類的中心思想是 確定k個類,計算模式特徵向量到每個聚類中心的 距離 將特徵向量歸併到距離最小的聚類中心所在的類中。把每一類的平均向量特徵的均值作為新的類心。最後,使得樣本與類均值的誤差平方和最小。步驟...
k Means聚類原理及實現
吸收天地之精華,為了完成對資料聚類的任務,廣泛查閱各種資料,現總結如下 聚類分析是沒有給定劃分類別的情況下,根據樣本相似度進行樣本分組的一種方法,是一種非監督的學習演算法。聚類的輸入是一組未被標記的樣本,聚類根據資料自身的距離或相似度劃分為若干組,劃分的原則是組內距離最小化而組間距離最大化,如下圖所...
C list類及常用介面實現
因為list時雙向鍊錶,其內部存的不只有資料,還有前後指標,直接解引用會出錯 還有它的物理儲存空間不是連續的,操作是向前 後偏移一定的大小,而下乙個緊挨的物理空間可能是沒有申請的 所以將原生態指標進行封裝,因迭代器使用形式與指標完全相同,因此在自定義的類中必須實現以下方法 指標可以解引用,迭代器的類...