alg memo

1. 二分查找

int bSearch(int arr[], int begin, int end, int target)
{
    int mid, left = begin, right = end;
    while(left <= right)
    {
        mid = (left + right) / 2;
        if(arr[mid] == target)
            return mid;
        if(arr[mid] > target)
            right = mid - 1;
        else
            left = mid + 1;
    }
    return left; //Not found, return the closest on the RIGHT

    //return right; //Not found, return the closest on the LEFT
}

2. stl申请二维数组

vector<vector<int>> f(m, vector<int>(n, 0));

3. vector

vec.insert(vec.begin()+1, elem); //在第二位插入一个元素

vec.erase(vec.begin()+1); //删除第二位的元素

vec.back(); //传回最后一个元素

vec.pop_back(); //删除最后一个元素

vec.push_back(elem); //加入一个元素

vec.empty(); //判空

std::vector<int> vec1(vec.begin() + 2, vec.end() - 1); //复制一个vector中间一段数据到新的vector

4. map

/*遍历*/
for(auto it = myMap.begin(); it != myMap.end(); it++) {
    cout << it->first << "" << it->second << endl;
}
/*查找*/
auto it = myMap.find(key);
if(it != myMap.end()) {
    cout << it->first << "" << it->second << endl;
} else {
    cout << "Not found" << endl;
}
myMap.clear(); //清空

myMap[key] = value; //插入一个元素,若key已存在则覆盖旧的value

myMap.insert(pair<keyType, valueType>(key, value)); //插入一个元素,若key已存在则插入失败

myMap.erase(key); //删除键值为key的元素,成功返回1,否则0

5. sort

/*从大到小排*/
bool cmp(int a, int b) {
    return a < b;
}
sort(vec.begin(), vec.end(), cmp);

你可能感兴趣的:(alg memo)