shared_ptr
使用shared_ptr必須定義包含文件
#include <boost/shared_ptr.hpp>
#include <memory>
並做聲明
using boost::shared_ptr;
string 和 int long 等相互轉換
to string
string to_string (int val);
string to_string (long val);
string to_string (long long val);
string to_string (unsigned val);
string to_string (unsigned long val);
string to_string (unsigned long long val);
string to_string (float val);
string to_string (double val);
string to_string (long double val);
string -> int/long
std::stoi
std::stol
std::stoll
map
map.begin()指向map的第一個元素,而 map.end()指向map的最後一個元素之後的地址,無論執行map.erase(iter)還是map.add(key, value),map.end()所返回的值永遠不會發生變化,都是指向同一塊內存。
map.lower_bound()返回的是大於某個鍵值的元素
map.upper_bound()返回的是不小於某個鍵值的元素
不過在具體編程過程中,如果設置爲降序排列,lower_bound的返回值就不是map中的元素
map的第三個參數的意義和map.size的含義
template < class Key, // map::key_type
class T, // map::mapped_type
class Compare = less<Key>, // map::key_compare
class Alloc = allocator<pair<const Key,T> > // map::allocator_type
> class map;
less_equal是按key值升序排列,greater_equal是降序排列,而同一個key值後面跟的值按照降序排列
map.size()返回的是哈西對的個數,key和T有一個不同即爲不同對
#include <iostream>
#include <map>
#include <functional>
using namespace std;
int main()
{
map<int, int, greater_equal<int>> m_greater;
map<int, int, less_equal<int>> m_less;
for(int i = 15; i < 20; i ++)
for(int j = 45; j < 50; j ++)
{
m_greater.emplace(i, j);
m_less.emplace(i, j);
}
cout << "m_greater: " << endl;
for(auto &c: m_greater)cout << c.first << "->"<< c.second << endl;
cout << "m_less: " << endl;
for(auto &c: m_less)cout << c.first << "->"<< c.second << endl;
cout << "map.size(): " << m_greater.size() << "," << m_less.size() << endl;
}
結果如下:
CHECK_XX
\#define CHECK_EQ(val1, val2) CHECK_OP(_EQ, ==, val1, val2)
\#define CHECK_NE(val1, val2) CHECK_OP(_NE, !=, val1, val2)
\#define CHECK_LE(val1, val2) CHECK_OP(_LE, <=, val1, val2)
\#define CHECK_LT(val1, val2) CHECK_OP(_LT, < , val1, val2)
\#define CHECK_GE(val1, val2) CHECK_OP(_GE, >=, val1, val2)
\#define CHECK_GT(val1, val2) CHECK_OP(_GT, > , val1, val2)
使用宏定義定義檢測val1和val2的值,若不符合定義的符號則返回錯誤信息
刪除文件
使用remove函數
remove("~\files\1.txt")
文件流控制時參數設置
ios::in 爲輸入(讀)而打開一個文件
ios::out //爲輸出(寫)而打開文件
ios::ate //初始位置:文件尾
ios::app //所有輸出附加在文件末尾
ios::trunc //如果文件已存在則先刪除該文件
ios::binary //二進制方式
bug error: passing ‘XXX’ as ‘this’ argument of ‘XXX’
C++中const 引用的是對象時只能訪問該對象的const 函數,因爲其他函數有可能會修改該對象的成員,編譯器爲了避免該類事情發生,會認爲調用非const函數是錯誤的,即const函數只能調用const函數