一些語言方面的技巧

2022-02-14 00:14:18 字數 2345 閱讀 9059

1.數字轉string

int

x;string

id;stringstream ss;

ss > id;

2.字串轉數字

int

num;

string

s;stringstream ss(s);

ss>>num;

char

str;

sscanf( str, "%d

", &num ); //

將字串轉換成整數

sscanf( str, "

%f", &floatnum ); //

將字串轉換成浮點數

char

str;

floatnum = atof(str); //

字串轉浮點數

num = atoi(str); //

字串轉整數

若字串為string型別,則要用c_str()方法獲取其字串指標

string

str;

floatnum = atof(str.c_str()); //

string轉浮點數

num = atoi(str.c_str()); //

string轉整數

3.結構體內嵌比較函式的規則

如下:

struct

node

};

此時左邊那個r表示自己這個r,如果排序的話,會按r值從小到大排序,因為sort預設就是從小到大的。

而優先佇列就不同了,優先佇列中預設是大值優先,所以大小關係相反,比如下面這個:

struct

sell

};priority_queueque;

那麼這個優先佇列是按price小的優先出隊。

總之記住:結構體中直接寫比較函式一定是左邊那個裸的r表示當前this值,如果r

4.排序vector結構體最好內嵌比較函式

比如內嵌:

bool

operator

<(const node &b)const

時   sort(v.begin(),v.end())  比  sort(v.begin(),v.end(),cmp) 快。 而且是超時的點。 注意!

5.lower_bound(),upper_bound() 和unique函式的下標關係。

我們經常要用到這兩個函式,但是每次都要斟酌到底下標減不減1.

正確規則是:

unique函式想要得到正確的不相同元素個數,那麼下標在以1開始時要減去num+1, 即應該如此呼叫:

tot = unique(num,num+tot)-num;

tot = unique(num+1,num+tot+1)-num-1;

因為tot是記錄個數,個數必然是與最初的下標的距離,所以最初的下標是0或1則減去0或1.

而lower_bound()則不同,lower_bound(),upper_bound()得到的是大於(等於)某數的第乙個數的下標,無論陣列從0還是1開始,都只要減num(陣列)即可,得到的下標自會調整為應該的下標。

即 應該如此呼叫:

int k1 = upper_bound(a+1,a+n+1,now)-a;

int k2 = upper_bound(a,a+n,now)-a;

6.vector中unique與erase結合去重

sort(a.begin(),a.end());       

a.erase(unique(a.begin(),a.end()),a.end());

7.g++與c++的區別

1、輸出double型別時,如果採用g++提交,scanf採用%lf,prinf採用%f,否則會報錯

對於64位整數, long long int 和 __int64 都是支援並且等價的.但是在讀和寫的時候只支援scanf("%i64d", ...)和printf("%i64d", ...).

不支援"%lld"是因為mingw下的gcc和g++使用的msvcrt.dll動態鏈結庫並不支援c99標準.

根據iso c++標準,在g++下,main函式的返回值必須是int,否則將會導致compile error(編譯錯誤)的判答

一些語言方面的技巧

1.數字轉string int x string id stringstream ss ss id 2.字串轉數字 int num string s stringstream ss s ss num char str sscanf str,d num 將字串轉換成整數 sscanf str,f fl...

AIX方面的一些資源

常用aix論壇位址介紹 aix論壇 http loveunix.style images 1 logo4.gif img url 愛u家園 是大家的快樂空間 aix使用者論壇 chinaunix的aix論壇 aix中國論壇 思達奇公司的aix 技術區 itpub的unix論壇 銀信公司 aix練習 ...

sde方面的一些疑問(筆記)

sde 1 arcsde 服務自 arcgis 10.3 起不再可用。但是,arcgis 10.3.1 和更高版本的客戶端仍可以使用 arcsde 服務連線到 10.1 或 10.2.x 版本的地理資料庫。2 arcgis 中的地理資料庫應用程式邏輯還用於讀取和處理所有地理資料來源 如計算機輔助繪圖...