1. init

// 大量数据时,cin、cout很慢
scanf("%d%d", &l, &r);
printf("%d\n", a);

char s[10];
getchar();
gets(s);	// c++14不支持
scanf("%s", s);

// 2D-array init
memset(array, val, 101 * 101 * sizeof(int));

set<int> iset(ivec.begin(), ivec.end());
set1.insert(set2.begin(), set2.end());

struct cmp{
    bool operator()(pair<ll,ll> p1, pair<ll,ll> p2){
        return p1.first < p2.first;		// 由小到大
    }
};
bool cmp1(pair<int,int> p1, pair<int,int> p2){
    return p1.second < p2.second;
}
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, cmp> q;
priority_queue<pair<ll, ll>, vector<pair<ll, ll>>, cmp1> q;

auto comp = [](pair<int,int> a, pair<int,int> b) { return a.second > b.second; };
priority_queue<pair<int, int>, vector<pair<int,int>>, decltype(comp)> p(comp);

numeric_limits<int>::max()
iota(v.begin(), v.end(), 0);	// range(0,n,1)

2. transformation

int i = stoi(s);	//stof, stod, stol ,stoll...
string s = to_string(i);

strcpy(arr, string.c_str());
string s = arr;

vector<string> split(const  string& s, const string& delim) {
    vector<string> elems;
    size_t pos = 0;
    size_t len = s.length();
    size_t delim_len = delim.length();
    if (delim_len == 0) return elems;
    while (pos < len) {
        int find_pos = s.find(delim, pos);
        if (find_pos < 0) {
            elems.push_back(s.substr(pos, len - pos));
            break;
        }
        elems.push_back(s.substr(pos, find_pos - pos));
        pos = find_pos + delim_len;
    }
    return elems;
}

### 3. unordered_map
~~~cpp
auto map_it = map.begin();
cout << map_it->first << map_it->second;

auto ret = map.insert(make_pair(key, value));
if(!ret.second)
	ret.first->second++;

struct hashfunc {
	template<typename T, typename U>
	size_t operator()(const pair<T, U> &x) const {
		return hash<T>()(x.first) ^ hash<U>()(x.second);
	}
};
unordered_map<pair<int, int>, int, hashfunc> func_map;

4. stl

sort(v.begin(), v.end());
partial_sort(v.begin(), v.begin()+n, v.end());	// 得到前n小的元素
nth_element(v.begin(), v.begin()+n, v.end());	// 第n+1小的元素在第n位,比n+1小的在前面,
						// 比n+1大的在后面
auto it = partition(v.begin(), v.end(), func);	// 将满足func的放在前面,内部无序

5. others

// map
transform(v.begin(), v.end(), out.begin(), [](int i){ return i+10; });
// filter
vector<int> v(10, 0);	// out有足够的容量
auto it = remove_copy_if(v.begin(), v.end(), out.begin(), [](int i){ return i>3&&i<8; });
out.erase(it, out.end());
vector<int> v;		// out未初始化,调用back_inserter(out),适合所有支持push_back的容器
remove_copy_if(v.begin(), v.end(), back_inserter(out), [](int i){ return i>3&&i<8; });
// reduce
accumulate(v.begin(), v.end(), 0.0, [](int i, int j){ return i-j; });

ShengYg

Step after step the ladder is ascended.


Tags • note