📜  C ++ |新增和删除|问题2(1)

📅  最后修改于: 2023-12-03 15:13:45.051000             🧑  作者: Mango

C++ | 新增和删除 | 问题2

在 C++ 中,新增和删除元素是常见的操作,尤其是在容器类中。本文将介绍如何使用标准库中的一些函数来进行新增和删除操作。

vector

vector 是 C++ 中的一种动态数组,可以在尾部添加元素,也可以在任意位置删除元素。

新增元素

使用 push_back() 在尾部添加元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec {1, 2, 3};
    vec.push_back(4);
    for (auto v : vec)
        std::cout << v << " ";
    // Output: 1 2 3 4
}

使用 insert() 在指定位置添加元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec {1, 2, 3};
    auto it = vec.begin() + 1;
    vec.insert(it, 4);
    for (auto v : vec)
        std::cout << v << " ";
    // Output: 1 4 2 3
}
删除元素

使用 pop_back() 删除元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec {1, 2, 3};
    vec.pop_back();
    for (auto v : vec)
        std::cout << v << " ";
    // Output: 1 2
}

使用 erase() 删除指定位置的元素:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec {1, 2, 3};
    auto it = vec.begin() + 1;
    vec.erase(it);
    for (auto v : vec)
        std::cout << v << " ";
    // Output: 1 3
}
list

list 是 C++ 中的双向链表,可以在任意位置添加或删除元素。

新增元素

使用 push_back() 在尾部添加元素:

#include <iostream>
#include <list>

int main() {
    std::list<int> lst {1, 2, 3};
    lst.push_back(4);
    for (auto v : lst)
        std::cout << v << " ";
    // Output: 1 2 3 4
}

使用 insert() 在指定位置添加元素:

#include <iostream>
#include <list>

int main() {
    std::list<int> lst {1, 2, 3};
    auto it = lst.begin();
    lst.insert(it, 4);
    for (auto v : lst)
        std::cout << v << " ";
    // Output: 4 1 2 3
}
删除元素

使用 pop_back() 删除尾部元素:

#include <iostream>
#include <list>

int main() {
    std::list<int> lst {1, 2, 3};
    lst.pop_back();
    for (auto v : lst)
        std::cout << v << " ";
    // Output: 1 2
}

使用 erase() 在指定位置删除元素:

#include <iostream>
#include <list>

int main() {
    std::list<int> lst {1, 2, 3};
    auto it = lst.begin();
    std::advance(it, 1);
    lst.erase(it);
    for (auto v : lst)
        std::cout << v << " ";
    // Output: 1 3
}
deque

deque 是 C++ 中的双端队列,可以在队头和队尾添加或删除元素。

新增元素

使用 push_back() 在队尾添加元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    deq.push_back(4);
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 1 2 3 4
}

使用 push_front() 在队头添加元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    deq.push_front(0);
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 0 1 2 3
}

使用 insert() 在指定位置添加元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    auto it = deq.begin() + 1;
    deq.insert(it, 4);
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 1 4 2 3
}
删除元素

使用 pop_back() 删除队尾元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    deq.pop_back();
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 1 2
}

使用 pop_front() 删除队头元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    deq.pop_front();
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 2 3
}

使用 erase() 删除指定位置的元素:

#include <iostream>
#include <deque>

int main() {
    std::deque<int> deq {1, 2, 3};
    auto it = deq.begin() + 1;
    deq.erase(it);
    for (auto v : deq)
        std::cout << v << " ";
    // Output: 1 3
}