C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML
C++ Multiset emplace_hint()C++ Multiset emplace_hint() function is used to extend the multiset container by inserting new elements into the container using hint as a position for element. Elements are built directly (neither copied nor moved). The constructor of the element is called by giving the arguments args passed to this function. Syntaxtemplate <class... Args> iterator emplace_hint (const_iterator position, Args&&... args); //since C++ 11 Parameterargs: The arguments forwarded to construct an element to be inserted into the container. position: Hint for the position to insert the new elements. Return valueemplace_hint() function returns an iterator to the newly inserted elements. If element is already exists, insertion is failed and returns iterator to the existing element. ComplexityIf position is not specified then complexity will be logarithmic in container size. If position is given then complexity will be amortized constant. Iterator validityNo changes. Data RacesThe container is modified. Iterating ranges in the container is not safe although concurrently accessing exiting elements is safe. Exception SafetyIf an exception is thrown, there are no changes in the container. Example 1Let's see the simple example to insert the elements into the multiset: #include <iostream> #include <set> using namespace std; int main(void) { multiset<int> m = {30, 20, 30, 10}; m.emplace_hint(m.end(), 40); m.emplace_hint(m.begin(), 20); cout << "Multiset contains following elements" << endl; for (auto it = m.begin(); it != m.end(); ++it) cout << *it<< endl; return 0; } Output: Multiset contains following elements 10 20 20 30 30 40 In the above example, it simply inserts the element into the multiset m with the given value in the given positions. Example 2Let's see a simple example: #include <set> #include <string> #include <iostream> using namespace std; template <typename M> void print(const M& m) { cout << m.size() << " elements: " << endl; for (const auto& p : m) { cout << p << " " ; } cout << endl; } int main() { multiset<string> m1; // Emplace some test data m1.emplace("Ram"); m1.emplace("Deep"); m1.emplace("Sunil"); cout << "multiset starting data: "; print(m1); cout << endl; // Emplace with hint // m1.end() should be the "next" element after this emplacement m1.emplace_hint(m1.end(), "Deep"); cout << "multiset modified, now contains "; print(m1); cout << endl; return 0; } Output: multiset starting data: 3 elements: Deep Ram Sunil multiset modified, now contains 4 elements: Deep Deep Ram Sunil Example 3Let's see a simple example to insert the elements into the multiset with the given position: #include <iostream> #include <set> using namespace std; int main () { multiset<char> mymultiset; auto it = mymultiset.end(); it = mymultiset.emplace_hint(it,'b'); mymultiset.emplace_hint(it,'a'); mymultiset.emplace_hint(mymultiset.end(),'b'); cout << "mymultiset contains:"; for (auto& x: mymultiset) cout << " [" << x << ']'; cout << '\n'; return 0; } Output: mymultiset contains: [a] [b] [b] Example 4Let's see a simple example to insert the element: #include <iostream> #include <set> #include <string> using namespace std; int main() { typedef multiset<string> city; string name; city fmly ; int n; cout<<"Enter the number of family members :"; cin>>n; cout<<"Enter the name of each member: \n"; for(int i =0; i<n; i++) { cin>> name; // Get key fmly.emplace_hint(fmly.begin(),name); } cout<<"\nTotal members of family is:"<< fmly.size(); cout<<"\nDetails of family members: \n"; cout<<"\nName \n ________________________\n"; city::iterator p; for(p = fmly.begin(); p!=fmly.end(); p++) { cout<<(*p) <<" \n "; } return 0; } Output: Enter the number of fmly members : 4 Enter the name of each member: Deep Sonu Ajeet Bob Total memnber of fmly is:4 Details of fmly members: Name ________________________ Ajeet Bob Deep Sonu In the above example, it simply inserts the elements by the user's choice in the beginning of multiset.
Next TopicC++ multiset
|