编辑代码

#include <iostream>
#include <vector>
using namespace std;
/*
知识点一:STL:
    c++标准模板库(standard template Library),
    提供一系列通用的,可复用的数据结构和算法
    组成部分:容器、迭代器、算法、分配器、函数对象等等……
    容器:提供了多种不同的数据结构:包括,向量(vector)、字符串(string)、栈(stack)……
    迭代器:管家,管理容器中的元素
    算法:提供对于容器各种操作,例如:排序,搜索、统计等……
    分配器:分配空间
知识点二:vector(向量,动态数组)
    静态数组:
        1、大小固定,不能改变 
        2、不支持动态添加和修改 
        3、存储空间相对使用比较低 
        4、访问速度比较快,效率高
    动态数组:
        1、大小可动态调整,适用于数量不确定可能变化的数据
        2、相对效率会低一点
        3、支持冬天添加或者删除元素

    动态数组的操作:
*/
int main() {
    /*1、创建和初始化
        格式: vector <数据类型> 数组名(常数/静态数组/动态数组);
            int statics[10] ={1,2,3,4,5};
            vector <int> nums = {1,2,3,4,5,6,7,8,9};
            vector <char> dynamics(10,'a');

    vector <char> dynamics ={'a','b','c','d'};
    2、增添数据
        数组名.push_back(数据) -> 将数据依次加入到末位,类似与Python中的append
        数组名.insert(位置,数据) -> 将数据加入到指定位置(迭代器位置)

    dynamics.push_back('a');
    dynamics.push_back('b');
    dynamics.push_back('c');
   dynamics.insert(dynamics.end()-1,'0');

     3、删除数据
        数组名.pop_back()               -> 删除末位
        数组名.erase(起始位置,结束位置) ->  删除指定范围内的数据
        数组名.clear()                 ->  清空数据
    dynamics.pop_back();
    dynamics.erase(dynamics.begin()+1);
    dynamics.erase(dynamics.begin(),dynamics.end());
    dynamics.clear();

     4、修改数据
    dynamics[0] = 'z';

     5、首尾操作
        首尾地址:
            数组名.begin()
            数组名.end()
        首位值
            数组名.front()
            数组名.back()

    cout<<dynamics.front()<<" "<<dynamics.back()<<endl;
     6、判断是否为空
            数组名.empty()
       
    cout<<dynamics.empty()<<endl;
    //遍历
    for(int i=0; i<dynamics.size(); i++) cout<<dynamics[i]<<" ";

    例题:
    小杨有个包含 n 个数字的序列A ,即A = {A1,A2,A3……} 。

    他想将其中小于 K 的数字都替换为序列的最小值,将 其中大于k 的数字都替换为序列的最大值,

    请你帮他计算出替换后的序列。

 
    //输入
    int n,k;
    cin>>n>>k;
    vector <int> nums(n);
    for (int i=0; i<n; i++) cin>>nums[i];

    //运算
    int maxn,minn;
    maxn=minn=nums[1];
    for (int i=1; i<n; i++){
        if (nums[i]>maxn) maxn=nums[i];
        if (nums[i]<minn) minn=nums[i];
    }
    for ( int i=0; i<n; i++){
        if (nums[i]<k) cout<<minn<<" ";
        if (nums[i]>k) cout<<maxn<<" ";
        if (nums[i]==k) cout<<k<<" ";
    }

    例题:
    小杨共有N个储蓄罐,编号从1到N。
    从第1天开始,小杨每天都会往存钱罐里存钱。
    具体来说,每天他都会挑选一个存钱罐存入i元钱。
    过了D天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?
	*/ 
    //输入
    int n,d;
    cin>>n>>d;
    vector <int> nums(d);
    for (int i=0; i<d; i++) cin>>nums[i];

    //运算
    vector <int> money(n);
    for (int i=0; i<d; i++){
        int num = nums[i];
        money[num] += i+1;
    }
    for (int i=0; i<n; i++) cout<<money[i]<<" ";

    return 0;
}