From e7e07f42b336bb7b5c488eb3bcc6397c0a2a03f4 Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 24 八月 2020 16:36:09 +0800 Subject: [PATCH] fix conflict --- test/test_map2.c | 79 +++++++++++++++++++++++++++++++++++++++ 1 files changed, 79 insertions(+), 0 deletions(-) diff --git a/test/test_map2.c b/test/test_map2.c new file mode 100644 index 0000000..86ed3f0 --- /dev/null +++ b/test/test_map2.c @@ -0,0 +1,79 @@ +#include <iomanip> +#include <iostream> +#include <map> +#include <string> + +using namespace std::literals; + +template<typename It> +void printInsertionStatus(It it, bool success) +{ + std::cout << "Insertion of " << it->first << (success ? " succeeded\n" : " failed\n"); +} + +int main() +{ + std::map<std::string, float> karasunoPlayerHeights; + + // Overload 3: insert from rvalue reference + const auto [it_hinata, success] = karasunoPlayerHeights.insert({"Hinata"s, 162.8}); + printInsertionStatus(it_hinata, success); + + { + // Overload 1: insert from lvalue reference + const auto [it, success2] = karasunoPlayerHeights.insert(*it_hinata); + printInsertionStatus(it, success2); + } + { + // Overload 2: insert via forwarding to emplace + const auto [it, success] = karasunoPlayerHeights.insert({"Kageyama", 180.6}); + printInsertionStatus(it, success); + } + + { + // Overload 6: insert from rvalue reference with positional hint + const std::size_t n = std::size(karasunoPlayerHeights); + const auto it = karasunoPlayerHeights.insert(it_hinata, {"Azumane"s, 184.7}); + printInsertionStatus(it, std::size(karasunoPlayerHeights) != n); + } + { + // Overload 4: insert from lvalue reference with positional hint + const std::size_t n = std::size(karasunoPlayerHeights); + const auto it = karasunoPlayerHeights.insert(it_hinata, *it_hinata); + printInsertionStatus(it, std::size(karasunoPlayerHeights) != n); + } + { + // Overload 5: insert via forwarding to emplace with positional hint + const std::size_t n = std::size(karasunoPlayerHeights); + const auto it = karasunoPlayerHeights.insert(it_hinata, {"Tsukishima", 188.3}); + printInsertionStatus(it, std::size(karasunoPlayerHeights) != n); + } + + auto node_hinata = karasunoPlayerHeights.extract(it_hinata); + std::map<std::string, float> playerHeights; + + // Overload 7: insert from iterator range + playerHeights.insert(std::begin(karasunoPlayerHeights), std::end(karasunoPlayerHeights)); + + // Overload 8: insert from initializer_list + playerHeights.insert({{"Kozume"s, 169.2}, {"Kuroo", 187.7}}); + + + // Overload 9: insert node + const auto status = playerHeights.insert(std::move(node_hinata)); + printInsertionStatus(status.position, status.inserted); + + node_hinata = playerHeights.extract(status.position); + { + // Overload 10: insert node with positional hint + const std::size_t n = std::size(playerHeights); + const auto it = playerHeights.insert(std::begin(playerHeights), std::move(node_hinata)); + printInsertionStatus(it, std::size(playerHeights) != n); + } + + + // Print resulting map + std::cout << std::left << '\n'; + for (const auto& [name, height] : playerHeights) + std::cout << std::setw(10) << name << " | " << height << "cm\n"; +} \ No newline at end of file -- Gitblit v1.8.0