Time of Update: 2018-07-18
enums枚舉是實值型別,資料直接儲存在棧中,而不是使用引用和真實資料的隔離方式來儲存。 (1)預設情況下,枚舉中的第一個變數被賦值為0,其他的變數的值按定義的順序來遞增(0,12,3...),因此以下兩個代碼定義是等價的: enum TrafficLight{Green,Yellow,Red} enum TrafficLight{Green = 0,Yellow = 1,Red = 2} (2)enum枚舉類型的變數的名字不能相同,但是值可以相同,例如:
Time of Update: 2018-07-18
面試的時候被問及了String類的實現,結果沒寫好... 就當是重新複習一下吧。 下面的程式並沒有把String類的所有成員方法實現,只參考教程寫了大部分重要的成員函數。 #include<iostream> #include<iomanip> using namespace std; class String{ friend ostream& operator<<
Time of Update: 2018-07-18
原文: http://en.cppreference.com/w/cpp/thread/lock_guard std::lock_guard lock_guard 類是一個mutex封裝者,它為了擁有一個或多個mutex而提供了一種方便的 RAII style 機制。( 譯註:所謂的RAII,全稱為Resource Acquisition Is
Time of Update: 2018-07-18
原文如下: http://en.cppreference.com/w/cpp/thread/unique_lock http://en.cppreference.com/w/cpp/thread/unique_lock/unique_lock http://en.cppreference.com/w/cpp/thread/unique_lock/~unique_lock
Time of Update: 2018-07-18
假設已經開啟的檔案控制代碼為fp 如果是文字檔,用如下語句寫入換行fprintf(fp,"\n");如果是二進位檔案,用如下語句寫入換行char ch[2]="\n\r";fwrite(ch,2,1,fp); char ch[2]; ch[0] = 0x13; ch[1] = 0x10; 則不能實現換行。這個感覺就太奇怪了。。 //寫到檔案上去 char buffer[3]={0x33,'\n','
Time of Update: 2018-07-18
本文轉載自:C++中cin的詳細用法 代碼編譯運行環境:VS2012+Win32+Debug。(我用Eclipse也跑過一遍了) 1.cin簡介 cin是C++程式設計語言中的標準輸入資料流對象,即istream類的對象。cin主要用於從標準輸入讀取資料,這裡的標準輸入,指的是終端的鍵盤。此外,cout是流的對象,即ostream類的對象,cerr是標準錯誤輸出資料流的對象,也是ostream
Time of Update: 2018-07-18
交換排序—冒泡排序(Bubble Sort) 基本思想: 在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即:每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。 演算法的實現: #include<iostream>#include<string>using namespace std;void print(int a[],int n,int i){
Time of Update: 2018-07-18
#include<vector>詳細的函數實現功能:其中vector<int> c. 不能直接定義為NULL 二維vector的初始化vector<vector <int> > ivec(m ,vector<int>(n,0)); //m*n的二維vector,所有元素初始化為0vector<vector<int>> ret(m,vector<int>(n));//m*n的二維vector初始化
Time of Update: 2018-07-18
1.插入排序—直接插入排序(Straight Insertion Sort) 基本思想: 將一個記錄插入到已排序好的有序表中,從而得到一個新,記錄數增1的有序表。即:先將序列的第1個記錄看成是一個有序的子序列,然後從第2個記錄逐個進行插入,直至整個序列有序為止。 要點:設立哨兵,作為臨時儲存和判斷數組邊界之用。 如果碰見一個和插入元素相等的,那麼插入元素把想插入的元素放在相等元素的後面。所以,相等元素的前後順序沒有改變,從原無序序列出去的順序就是排好序後的順序,所以插入排序是穩定的。
Time of Update: 2018-07-18
Socket通訊原理探討(C++為例) 一、網路中進程之間如何通訊。 本地的處理序間通訊(IPC)有很多種方式,但可以總結為下面4類: 1、訊息傳遞(管道、FIFO、訊息佇列) 2、同步(互斥量、條件變數、讀寫鎖、檔案和寫記錄鎖、訊號量)
Time of Update: 2018-07-18
C++程式中調用exe可執行檔 在開發項目的時候,有的時候會分開來開發,分開的有時是exe檔案,有的時候也會調用現成的工具包裡面的一些exe檔案,這樣在項目裡面就要通過調用exe檔案來使用。 那麼在C++裡面直接調用exe檔案的方法有哪些呢。現在可考慮的方法主要有: a.使用system函數 b.使用exec或者是execv函數 c.使用WinExec函數
Time of Update: 2018-07-18
一. 什麼是拷貝建構函式 首先對於普通類型的對象來說,它們之間的複製是很簡單的,例如: [c-sharp] view plain copy int a = 100; int b = a; &
Time of Update: 2018-07-18
最近在學演算法內容,發現很多演算法依賴於基本的資料結構,所以從新溫習資料結構,記錄一下,以後知識點忘記可以提醒自己哪裡比較容易出錯。 所用教材《資料結構與演算法分析》by Mark Allen Weiss 《資料結構》(C語言版) by嚴蔚敏 #include <stdio.h>#include <stdlib.h>#include "List.h"//首先一些預定義:struct Node;typedef int
Time of Update: 2018-07-18
myList.h //myList.h// abstract data type for List template <class T> class List { void clear(); // 置空線性表 bool isEmpty(); // 線性表為空白時,返回True bool append(T value); //
Time of Update: 2018-07-18
線性表(List):零個或多個資料元素的有限序列。線性表的抽象資料類型。 線性表的順序儲存: 優點:無須為表示表中元素的邏輯關係而額外的儲存空間,可以快速的取表中任意位置的元素。 缺點:插入和刪除操作需要轉移大量元素,線性表的長度較大時,難以確定儲存空間的容量, 造成儲存空間的“片段”。 線性表的鏈式儲存:
Time of Update: 2018-07-18
SeqList.h #ifndef SEQLIST_H#define SEQLIST_H#include<iostream>using namespace std;typedef enum{TRUE,FALSE}Status;template<class Type>class SeqList{private:enum{DefaultSize = 10}; //順序表的預設長度Type *base; //存放元素數組的首地址int
Time of Update: 2018-07-18
很早前就想用C++來實現那些常用的資料結構。 今天就算是個開端把。還是那句話,看的再多不如自己動手寫一遍。 按照自己的思路寫。首先你得熟悉那種結構的特點,然後才能談實現。 鏈表是一種很常用的資料結構。支援在任意地方對資料進行增刪改查。 但是不支援隨機訪問。所以複雜度就有些高了。寫的時候出了個問題。 最後把記憶體查看了幾遍。並不是儲存資料的結點出問題了。而是在鏈錶轉置 的時候用到的那個int *p = new
Time of Update: 2018-07-18
//該程式實現了線性表的鏈式儲存結構之單鏈表和各項操作#include<iostream>#include<tchar.h>using namespace std;//****線性表和一些基礎的定義***** #define ElemType int /*表中資料元素類型*/typedef struct Node{ ElemType data; Node* next;}LNode,* LinkList;#define OK 1#define
Time of Update: 2018-07-18
要想深入理解C語言就不得不要知道幾個知識點: 1.眾所周知用任意一進階語言(不是指令碼語言)寫的代碼都要經過類似:預先處理->編譯成彙編代碼(compilation)->彙編(assembly)->串連(linking)這樣的階段。其中預先處理產生.i檔案,compilation產生.s檔案,assembly產生.o檔案,最後串連才會產生可執行檔,.o檔案中不同機器上是不同的,而Java的能夠“一次編譯,到處運行“是因為Java不會像c那樣在不同機器上產生不同的.o檔案,
Time of Update: 2018-07-18
(1)擷取linux系統的使用者名稱: 通過 struct passwd *getpwuid(uid_t uid)函數; 該函數返回passwd結構體,此結構體中包含使用者名稱欄位 struct passwd { char *pw_name; /*user name