C++刷题API


1.数组

#include<iostream>
#include<algorithm>

using namespace std;

int main() {
    int arr[] = {5, 4, 1, 7, 2}; //定义时创建数组
    int length = sizeof(arr) / sizeof(int); // 求出数组的长度
    cout << length << endl;
    sort(arr, arr + 5);

    for (int e : arr)
        cout << e << " ";

    int* arr2 = new int[10];
    delete [] arr2;
}

2.char

#include<iostream>
#include<cstring>

using namespace std;

int main() {
    
    char c = 'A';
    bool is = isalpha(c); //字母(包括大小写)
    cout << is << endl; //true:1

    bool is2 = islower(c); //小写字母
    bool is3 = isupper(c); //大写字母
    bool is4 = isalnum(c); //字母大写小写 + 数字
    bool is5 = isblank(c); //空格和 \t
    bool is6 = isspace(c); //空格、\t、\r、\n
    
    char cc = toupper(c);
    char tt = tolower(c);
}

3.string

#include<iostream>
#include<cstring>
#include<string>

using namespace std;

int main() {
    string s = "Hello,World";//赋值字符串
    string s2 = s; //产生一个新的字符串
    string s3 = s + s2; //字符串拼接
    string s4;
    cin>>s4; //输入字符串
    cout<<s4; //输出字符串
    s.length(); //字符串的真实长度
    getline(cin, s); //读取一行字符串,包括空格
    string s7 = s.substr(4); // 表示从下标4开始一直到结束
    string s8 = s.substr(5,3); //表示从下标5开始,3个字符

}

4.vector

#include<iostream>
#include<vector>

using namespace std;

int main() {

    //定义时不指定大小,不指定默认值
    vector<int> v; //定义一个vector v,定义的时候没有分配大小
    cout<<v.size(); //0
    v.resize(8);//动态分配大小为8,默认这8个元素都是0

    //定义时指定大小,指定默认值
    vector<int> c(100, 9);//长度100,所有元素值为9
    //增删改查
    v.push_back(1);//末尾添加一个元素

    //遍历
    for (auto it = c.begin(); it != c.end(); it++) {
        cout<< *it << " ";
    }
    
}

5.set/unordered_set

#include<iostream>
#include<set>
#include<unordered_set>

using namespace std;

int main() {
    set<int> s; // 定义一个空集合s 有序的,二叉树实现,O(logN)
    unordered_set<int> set2;//无序的,哈希表实现,O(1)
    s.insert(1); //向集合s里面插入一个1
    cout << *(s.begin()) << endl; //输出集合s的第一个元素

    for (int i = 0; i < 6; i++) {
        s.insert(i * 2);//插入
    }

    //遍历
    for (auto it = s.begin(); it != s.end(); it++) {
        cout << *it << " "; 
    }

    //查找一个元素
    //找到为true:1.找不到为false:0
    cout << (s.find(10) != s.end()) << endl;

    //删除
    s.erase(1);//删除集合s中的1这个元素
    cout << (s.find(3) != s.end()) << endl;//此时1已经找不到了
    cout << "true" <<(1 == 1) << endl;

    //向下取整
    cout << *s.lower_bound(4) << endl;//小于等于4中最大的
    cout << *s.upper_bound(7) << endl;//大于等于7中最小的
    return 0;
}

6.map/unordered_map

#include<iostream>
#include<map>
#include<unordered_map>

using namespace std;

int main() {
    map<string, int> m; //定义一个空的 map,键是string类型,值是int类型
    m["hello"] = 2; //将 key是"hello", 值是2的键值对存入 map中
    cout << m["hello"] << endl;

    //访问map中key为"hello"的value,如果 key不存在,则返回0,在这之后,这个key就存在了
    cout << m["world"] << endl;

    m["world"] = 3;
    m["aaa"] = 77;
    m["bbb"] = 999;

    //使用迭代器遍历,输出 map 中的所有元素,键用it->first获取,值用it->second获取
    for(auto it = m.begin(); it != m.end(); it++) {
        cout << it -> first << " " << it -> second << endl;
    }

    //访问 map 的第一个元素,输出它的键和值
    cout << m.begin() -> first << " " << m.begin() -> second << endl;

    //访问map的最后一个元素,输出它的键和值

    cout << m.rbegin() -> first << " " << m.rbegin() -> second << endl;

    //输出map的元素个数
    cout << m.size() << endl;

    //对于有序的map
    map<string, int> mm; //key是升序的a,b,c,d
    map<string, int, greater<string>> mmm;//key是降序的c,b,a

    //end()是最后一个元素的后一个,是空。rbegin()才是最后一个元素

    return 0;
}

7.stack

#include<iostream>
#include<stack>

using namespace std;

int main() {

    stack<int> s; //定义一个空栈
    for(int i = 0; i < 6; i++) {
        s.push(i); //将元素i压入栈s中
    }

    cout << s.top() << endl; //访问s的栈顶元素
    cout << s.size() << endl; //输出s的元素个数

    s.pop(); //移除栈顶元素
    return 0;

}

8.queue

#include<iostream>
#include<queue>

using namespace std;

int main() {
    queue<int> q;//定义一个空栈

    for(int i = 0; i < 6; i++) {
        q.push(i); //将i的值依次压入到队列q中
    }
    cout << q.front() << "" << q.back() << endl;//访问队首和队尾元素

    cout<< q.size() << endl; //输出队列的元素个数

    q.pop(); //移除队列的队首元素

    return 0;
}

9.排序

#include<iostream>
#include<vector>
#include<algorithm>

using namespace std;

bool cmp(int a, int b) {
    return a > b;//从大到小排序
}

int main() {
    vector<int> v(10);
    for(int i = 0; i < 10; i++)
        cin >> v[i];
    sort(v.begin(), v.end());//默认,从小到大排序

    int arr[10];
    for (int i = 0; i < 10; i++)
        cin >> arr[i];
    sort(arr, arr + 10, cmp);//arr从大到小排列
    return 0;
}

10.其他

auto 自动推断变量类型,用在迭代器里

基于范围的for循环
int arr[4] = {0, 1, 2, 3};
for (int i : arr)
	cout << i << endl; // 输出数组中的每⼀个元素的值,每个元素占据⼀⾏
	// i 依次表示数组中的每⼀个元素,此时read only
for (int &i : arr) // i为引⽤变量
	i = i * 2; // 将数组中的每⼀个元素都乘以2,arr[4]的内容变为了{0, 2, 4, 6}

类型转换

to_string 
stoi stod
stof (string to float)
stold (string to long double)
stol (string to long)
stoll (string to long long)
stoul(string to unsigned long)
stoull (string to unsigned long long)

文章作者: Antonio
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Antonio !
  目录