diff --git a/02. PARA/03. Resources(資源)/C++17/Structured binding declaration.md b/02. PARA/03. Resources(資源)/C++17/Structured binding declaration.md index 02bdf41..b596e94 100644 --- a/02. PARA/03. Resources(資源)/C++17/Structured binding declaration.md +++ b/02. PARA/03. Resources(資源)/C++17/Structured binding declaration.md @@ -34,4 +34,24 @@ auto& [num1, num2, num3] = my_vec; ```cpp float rect[4]{ 5.0f, 6.0f, 120.0f, 200.0f }; auto& [x, y, w, h] = rect; -``` \ No newline at end of file +``` + +但是不能用來展開 `std::vector`。 + +## 展開 pair +```cpp +std::pair name_phone{ "John", 912345678 }; +auto& [name, phone_number] = name_phone; +``` + +用在 for-loop 裡也比較好懂,假設我們有一個 vector 用來存剛剛的姓名跟電話: +```cpp +std::vector> phoneBook = { + { "John", 912345678 }, + { "Andy", 912345679 }, +}; + +for (const auto& [name, phone] : phoneBook) { + std::cout << "Name: " << name << ", phone: " << phone << std::endl; +} +```