pair嵌套vector
时间: 2025-09-05 08:17:02 AIGC 浏览: 5
### 如何在C++中实现 `std::pair` 嵌套于 `std::vector`
为了使用 `std::pair` 和 `std::vector` 的组合,在 C++ 中可以定义一个包含 `std::pair` 类型的向量。这种结构允许存储键值对集合,并通过索引来访问这些数据。
#### 定义和初始化
要创建一个嵌套有 `std::pair` 的 `std::vector`,需要指定其模板参数为 `std::pair<FirstType, SecondType>`。以下是具体的例子:
```cpp
#include <iostream>
#include <vector> // Required for std::vector
#include <utility> // Required for std::pair
int main() {
// Define a vector of pairs where each pair consists of an int and a string.
std::vector<std::pair<int, std::string>> vec;
// Add elements to the vector using push_back or emplace_back.
vec.push_back(std::make_pair(1, "Apple")); // Using make_pair[^1]
vec.emplace_back(2, "Banana"); // Directly construct with emplace_back[^3]
// Accessing elements within the vector.
for (const auto& elem : vec) {
std::cout << "Key: " << elem.first << ", Value: " << elem.second << '\n';
}
return 0;
}
```
上述代码展示了如何声明并操作一个由整数和字符串组成的键值对容器。这里的关键在于理解 `std::pair` 是一种简单的二元组类型,而将其作为元素放入 `std::vector` 则提供了动态数组的功能。
#### 遍历与打印
当遍历这样的复合结构时,通常会利用范围循环来简化语法。下面是一个更复杂的示例,展示如何处理多个嵌套层次的数据结构:
```cpp
#include <iostream>
#include <vector>
#include <utility>
void printVectorOfPairs(const std::vector<std::pair<int, double>>& dataVec) {
for (const auto& item : dataVec) {
std::cout << "(" << item.first << ", " << item.second << ") ";
}
std::cout << "\n";
}
int main() {
std::vector<std::pair<int, double>> complexData = {{1, 3.14}, {2, 2.718}};
printVectorOfPairs(complexData);
return 0;
}
```
此程序片段进一步扩展了之前的概念,不仅限定了具体类型的实例化方式,还引入了一个辅助函数用于输出整个向量的内容[^2]。
#### 性能考虑
尽管现代标准库优化了许多内部机制,但在性能敏感的应用场景下仍需注意某些细节。例如,频繁调用 `push_back()` 可能引发多次内存重新分配;此时如果能够预估大小,则应提前预留空间以减少不必要的开销:
```cpp
vec.reserve(expectedSize); // Reserve space before adding many items.
```
此外,对于只读访问的情况,推荐采用常量迭代器(`const_iterator`)提高安全性的同时保持效率不变。
---
阅读全文
相关推荐




















