English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set emplace()함수는 새로운 요소를 컨테이너에 삽입하여 set 컨테이너를 확장하는 데 사용됩니다. 요소는 직접 구축됩니다(복사도 이동도 되지 않습니다)。
함수에 전달된 파라미터 args를 통해 요소의 생성자를 호출합니다。
키가 존재하지 않을 때만 삽입됩니다。
template<class... Args> pair<iterator, bool> emplace(Args&&... args); //C++ 11 이후
args:콘테이너에 삽입하려는 요소를 생성하려는 파라미터를 전달합니다。
emplace() 함수는 새로운 요소를 컨테이너에 삽입하여 set 컨테이너를 확장하는 데 사용됩니다. 요소는 직접 구축됩니다(복사도 이동도 되지 않습니다)。
容器大小的对数。
没有变化。
容器已修改。
尽管同时访问出口元素是安全的,但在容器中进行迭代范围并不安全。
如果引发异常,则容器中没有任何更改。
让我们看一下将元素插入到集合中的简单示例:
#include <iostream> #include <set> using namespace std; int main(void) { set<char> m; m.emplace('a'); m.emplace('b'); m.emplace('c'); m.emplace('d'); m.emplace('e'); cout << "集合包含以下元素" << endl; for (auto it = m.begin(); it != m.end(); ++it) cout << *it << ", "; return 0; }
출력:
集合包含以下元素 a, b, c, d, e,
在上面的示例中,它只是将具有给定键值对的元素插入到集合m中。
让我们看一个简单的实例,插入元素并检查重复键:
#include <set> #include <string> #include <iostream> using namespace std; template<typename S> void print(const S& s) { cout << s.size() << " 元素: "; for (const auto& p : s) { cout << "(" << p << ") "; } cout << endl; } int main() { set<string> s1; auto ret = s1.emplace("ten"); if (!ret.second){ cout << "Emplace失败,值为“ten”的元素已经存在。" << endl << " 现有元素是 (" << *ret.first << ")" << endl; cout << "set没有被修改" << endl; } else{ cout << "集合已修改,现在包含 "; print(s1); } cout << endl; ret = s1.emplace("ten"); if (!ret.second){ cout << "Emplace失败,值为“ten”的元素已经存在。" << endl << " 现有元素是 (" << *ret.first << ")" << endl; } else{ cout << "集合已修改,现在包含 "; print(s1); } cout << endl; }
출력:
集合已修改,现在包含 1 元素: (ten) Emplace失败,值为“ten”的元素已经存在。 现有元素是 (ten)
在上面的示例中,将元素插入到集合中,当您尝试使用相同的键“十”时,它将显示一条错误消息,提示键“十”已经存在。
让我们看一个简单的示例,查找插入元素的总和:
#include <iostream> #include <set> using namespace std; int main() { // sum变量声明 int sum = 0; // set声明 set<int> myset{}; myset.emplace(1); myset.emplace(7); myset.emplace(4); myset.emplace(8); myset.emplace(2); myset.emplace(5); myset.emplace(3); // iterator声明 set<int>::iterator it; // 求元素之和 while (!myset.empty()) { it = myset.begin(); sum = sum + *it; myset.erase(it); } // 打印总和 cout << "元素的总和为: " << sum; return 0; }
출력:
元素的总和为: 30
让我们看一个插入元素的简单示例:
#include <iostream> #include <set> #include <string> using namespace std; int main() { typedef set<string> city; string name; city fmly; int n; cout << "输入家庭成员的数量 :\ cin >> n; cout << "输入每个成员的姓名: \n"; for(int i = 0; i < n;++) { cin >> name; // Get key fmly.emplace(name); } cout << "\n가족의 총 구성원은:" << fmly.size(); cout << "\n가족 구성원 목록: \n"; cout << "\n이름 \n ________________________\n"; city::iterator p; for(p = fmly.begin(); p!=fmly.end(); p++) { cout << (*p << " \n "; } return 0; }
출력:
가족 구성원의 수를 입력하세요: 3 각 구성원의 이름을 입력하세요: Bob Robin David 가족의 총 구성원은: 3 가족 구성원 목록: 이름 ________________________ Bob David Robin
위의 예제에서는 사용자의 선택에 따라 요소를 삽입합니다.