c++常用容器/函数——入门篇

目录

前言

一、容器篇

1.vector动态数组

2.string

3.map

4.set

5.unordered_set

6.pair

二、函数篇

1.sqrt 平方根函数

2.pow 求幂函数

3.fabs以及abs 求绝对值函数

4.fgets

5.isxdigit

6.strcmp

7.tolower 和 toupper

8.islower 和 isupper

9.transform 

10.to_string

11.getline

12.sort 排序函数

13.partial_sort 部分排序函数

14.upper_bound 查找函数

15.count 计数函数

16.all_of 

17.swap 交换函数

18.max_element 和 min_element


前言

我们新手小白在刷题时,写的代码往往冗长而臃肿,不够简洁高效,比如我就喜欢写屎山代码(狗头),这篇文章介绍了我刷题这几个月来积累和总结的一些函数和容器(目前只有浅浅的认识,还谈不上认知,但新手阶段应该够用啦),这些函数和容器能够帮助我们新手小白优化代码,提高代码的可读性。另外,有错误和不足的地方,欢迎大家指正与补充。

一、容器篇

1.vector动态数组

介绍:vector是一个动态数组,它可以在运行时根据需要自动调整大小。vector是C++标准库中的一个容器,提供了许多有用的方法和功能,使其成为处理动态数据集合的强大工具。

用法如下:

//创建vector
vector<int> a;//未给定长度
vector<int> a(n);//给定长度为n

//添加元素
a.push_back(b);//从尾部插入b这个元素
cin>>a[i];//从键盘输入一个元素插入到a[i]里(用于长度给定时)
a[i]=b;//直接赋值

//删除末尾元素
a.pop_back();

//获取大小
int len=a.size();

//遍历
for(int i=0;i<a.size();i++)
{
    cout<<a[i]<<endl;
}

//数组拷贝
vector<int> a(b);//将b数组拷贝给a
a=b;//直接赋值也行
vector<int> a(b.begin(),b.end())//此方法可拷贝部分元素

//数组交换
a.swap(b);

2.string

介绍:string是一个非常常用的字符串类,它提供了一系列的成员函数和操作符来方便地处理字符串。使用sting类可以避免C风格字符串的一些问题,比如长度不可变、内存管理等。

用法如下:

    // 创建
    string str;            // 创建一个空的字符串
    string str1 = "Hello"; // 使用字符串字面值初始化
    string str2("world");  // 使用构造函数初始化

    // 字符串的拼接
    string str1 = "Hello";
    string str2 = "world";
    string result = str1 + " " + str2;              // 使用"+"操作符拼接字符串
    string result2 = str1.append(" ").append(str2); // 使用append()函数拼接字符串

    // 字符串的长度和访问
    string str = "Hello";
    len = str.length();   // 获取字符串的长度
    char ch = str[0];     // 使用[]操作符访问字符串的字符
    char ch2 = str.at(1); // 使用at( )函数访问字符串的字符
    
    //字符串的查找和替换
    string str = "Hello world";
    size_t pos = str.find( "world");//查找子字符串的位置
    str.replace(pos, 5,"C++");//替换子字符串

    //字符串的比较 可以使用-=、!=、<、>、<=、>=等操作符来比较字符串的大小
    
    //值得注意的是:在C++中,存储在string中的数字不能直接进行加减运算。因为string类型是一个字符序列,而不是数字类型。如果你想要对存储在string中的数字进行加减运算,你需要先将其转换为数字类型,然后再进行运算。

3.map

介绍:map 是一种关联容器,通常在编程中用于存储键值对,其中每个键都是唯一的,并且与对应的值相关联。在 C++ 中,map 是 <map> 头文件中的模板类.

用法:

    //插入元素
    map<std::string, int> m;
    m["key1"] = 10; // 插入键为 "key1",值为 10 的元素

    //查找元素
    auto it = m.find("key1"); // 如果找到,it指向 ("key1", 10)

    //删除元素
    m.erase(it); // 删除找到的 "key1"

    //遍历
    for (auto it = m.begin(); it != m.end(); ++it) {
    cout << it->first << ": " << it->second << "\n";
    }

4.set

介绍:set 是一种关联容器,它按照元素值的自然顺序(对于可比较的类型)或自定义的比较函数来进行排序。set 实现了集合(或无序不重复元素集)的概念,其中每个元素都是唯一的,并且是有序的,这意味着你可以快速地查找、插入和删除元素(时间复杂度都是O(log n)),而不需要考虑它们在容器中的具体位置。

特点:

  1. 唯一性:容器中的每个元素都是唯一的,不允许重复。
  2. 排序:元素被存储在一个排序好的顺序中&#
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值