STL-vector(ACM)

1.长度可变的数组

2.这里不是很懂,v.size() 代码源里说这个v.size()是无符号类型的,使用时要说明类型,

 但是我在使用时并没有出现warning,有大佬知道原因吗?

 前置板子

3.vector是有v.clear()的

4.vector按字典序比较

重构函数(默认)

vector<int> v;
vector<int> v(3, 100); // 大小为3,每个数都是100
//下方为{}操作 C++11 可以用的
vector<int> v{1, 2, 3, 4}; // 把1,2,3,4塞进v里面,大小为4,元素1-4

基础操作

复制代码
v.size();  // unsigned类型
v.resize();

v.empty();
v.clear(); // 只能清空表面

// 只有这两个操作
v.push_back();
v.pop_back();

// 下面两个是地址
v.begin(); // 指第一个元素的位置
v.end();// 指最后一个元素的地址+1的地址
// 例如
// 1 2 3 4 5 6 7 8
// ^               ^
// |               |
// v.begin()       v.end()

v.insert(地址,元素) // 地址前一个插入元素
 // 下方操作会在3423后面和53之间插入7
vector<int> v{1, 2, 3423, 53, 542};
    v.insert(v.begin() + 3, 7);
         // 括号里第一个是地址,第二个是要插入的元素
        // 操作时间是O(n)的

v.erase(地址,元素); // 删去对应的元素

sort(v.begin(), v.end()); // 排序

lower_bound(v.begin(), v.end(), 100);

auto it = lower_bound(v.begin(), v.end(), 100);
// 返回前闭后开地址区间内 >= 100 的第一个元素的迭代器
// 这个查找必须在有序列里面,查询方式是二分,时间复杂度O(logn)

upper_bound(v.begin(), v.end(), 100)
auto it = upper_bound(v.begin(), v.end(), 100);
// 返回前闭后开地址区间内 > 100 的第一个元素的迭代器
// 这个查找必须在有序列里面,查询方式是二分,时间复杂度O(logn)
复制代码

 

迭代器

// 迭代器(可以暂时理解为STL的指针)
vector<int>::iterator it = v.begin(); // 初始化

// 迭代器遍历模板(auto C++11后可用,自动判断后面的类型)
for (auto it = v.begin(); it != v.end(); it ++) {
        cout << *it << endl;
    }

遍历新语法(C++11之后可以使用)

复制代码
for (int x : v) {
    cout << x << endl;
}
// 遍历每一个元素,每一次x作为每个元素,int 可改为 auto等
// 普通数组、STL数组、vector 都可使用

// 不会改变原来的值
for (int x : v) {
    x += 1;
} // 改变的只是每次x的值,v中的每个元素都不会改变
   // 像下边这样 

    for (int i = 0; i < v.size(); i ++) {
        int x = v[i];
        x += 1;
        cout << v[i] << endl;
    }
但是加上 & 就能 改
for (int &x : v) {
    x += 1;
}
// 加了是下边的效果
    for (int i = 0; i < v.size(); i ++) {
        int &x = v[i];
        x += 1;
        cout << v[i] << endl;
    }
复制代码

存图(以后回来看)

复制代码
for (int i = 1; i <= m; i ++) {
    int u, v;
    scanf("%d%d", &u, &v);
    g[u].push_back(v);
    g[v].push_back(u);
}

for (auto v : g[u]) {

}
复制代码

 

posted @   AC玴  阅读(11)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示