📜  C++ STL中的map insert()

📅  最后修改于: 2021-05-30 02:04:34             🧑  作者: Mango

map :: insert()是C++ STL中的内置函数,用于在地图容器中插入具有特定键的元素。

  • 句法:
iterator map_name.insert({key, element})



参数:该函数接受一对,该对包括要插入地图容器的键和元素。如果键已经存在于地图中,则该函数不会在地图中插入键和元素。

返回值:该函数返回一个迭代器,该迭代器指向容器中的新元素。

下面是上述语法的说明:

C++
// C++ program to illustrate
// map::insert({key, element})
#include 
using namespace std;
 
int main()
{
 
    // initialize container
    map mp;
 
    // insert elements in random order
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
    mp.insert({ 3, 60 });
 
    // does not inserts key 2 with element 20
    mp.insert({ 2, 20 });
    mp.insert({ 5, 50 });
 
    // prints the elements
    cout << "KEY\tELEMENT\n";
    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
    return 0;
}


C++
// C++ program to illustrate
// map::insert(iteratorposition, {key, element})
#include 
using namespace std;
 
int main()
{
   
    // initialize container
    map mp;
 
    // insert elements in random order
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
 
    auto it = mp.find(2);
 
    // inserts {3, 60} starting the search from
    // position where 2 is present
    mp.insert(it, { 3, 60 });
 
    // prints the elements
    cout << "KEY\tELEMENT\n";
    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
        cout << itr->first
            << '\t' << itr->second << '\n';
    }
    return 0;
}


C++
// C++ program to illustrate
// map::insert(iteratorposition1, iteratorposition2)
#include 
using namespace std;
 
int main()
{
 
    // initialize container
    map mp, mp1;
 
    // insert elements in random order
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
 
    // inserts all elements in range
    // [begin, end) in mp1
    mp1.insert(mp.begin(), mp.end());
 
    // prints the elements
    cout << "Elements in mp1 are\n";
    cout << "KEY\tELEMENT\n";
    for (auto itr = mp1.begin(); itr != mp1.end(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
    return 0;
}


输出:
KEY    ELEMENT
1    40
2    30
3    60
5    50



  • 句法:
iterator map_name.insert(iterator position, {key, element})



参数:该函数接受两个参数,如下所述:

  • {key,element}:这指定了一个对,该对由要插入地图容器的元素组成。
  • position:位置不指定要插入的位置,它仅指向要开始搜索插入操作的位置,以加快处理速度。插入是根据地图容器遵循的顺序完成的。

返回值:该函数返回一个迭代器,该迭代器指向容器中的新元素。

下面是上述语法的说明:

C++

// C++ program to illustrate
// map::insert(iteratorposition, {key, element})
#include 
using namespace std;
 
int main()
{
   
    // initialize container
    map mp;
 
    // insert elements in random order
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
 
    auto it = mp.find(2);
 
    // inserts {3, 60} starting the search from
    // position where 2 is present
    mp.insert(it, { 3, 60 });
 
    // prints the elements
    cout << "KEY\tELEMENT\n";
    for (auto itr = mp.begin(); itr != mp.end(); ++itr) {
        cout << itr->first
            << '\t' << itr->second << '\n';
    }
    return 0;
}

输出:

KEY    ELEMENT
1    40
2    30
3    60

  • 句法:
iterator map_name.insert(iterator position1, iterator position2)



参数:该函数接受两个参数position1position2 ,它们指定元素的范围。范围[position1,last)中的所有元素都插入到另一个地图容器中。

返回值:该函数返回一个迭代器,该迭代器指向容器中的新元素。

下面是上述语法的说明:

C++

// C++ program to illustrate
// map::insert(iteratorposition1, iteratorposition2)
#include 
using namespace std;
 
int main()
{
 
    // initialize container
    map mp, mp1;
 
    // insert elements in random order
    mp.insert({ 2, 30 });
    mp.insert({ 1, 40 });
 
    // inserts all elements in range
    // [begin, end) in mp1
    mp1.insert(mp.begin(), mp.end());
 
    // prints the elements
    cout << "Elements in mp1 are\n";
    cout << "KEY\tELEMENT\n";
    for (auto itr = mp1.begin(); itr != mp1.end(); ++itr) {
        cout << itr->first
             << '\t' << itr->second << '\n';
    }
    return 0;
}
输出:
Elements in mp1 are
KEY    ELEMENT
1    40
2    30



要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”