c++map添加元素 例程
时间: 2024-04-01 17:29:25 浏览: 68
在C++中,`std::map`是一个关联容器,它提供了一种键值对的映射关系。要向`std::map`中添加元素,可以使用`insert`函数或者使用下标操作符`[]`。
下面是一个示例程序,演示了如何向`std::map`中添加元素:
```cpp
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> myMap;
// 使用insert函数添加元素
myMap.insert(std::make_pair(1, "apple"));
myMap.insert(std::make_pair(2, "banana"));
myMap.insert(std::make_pair(3, "orange"));
// 使用下标操作符[]添加元素
myMap[4] = "grape";
myMap[5] = "watermelon";
// 遍历输出map中的元素
for (const auto& pair : myMap) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
return 0;
}
```
运行上述程序,输出结果为:
```
1: apple
2: banana
3: orange
4: grape
5: watermelon
```
相关问题
C++map的嵌套使用增删改查的例程
下面是一个简单的例程,演示了如何在C++中使用嵌套的map进行增删改查操作:
```c++
#include <iostream>
#include <map>
using namespace std;
int main() {
map<string, map<string, int>> student; // 学生名字 -> 科目 -> 分数
// 添加学生信息
student["Alice"]["Math"] = 90;
student["Alice"]["English"] = 85;
student["Bob"]["Math"] = 95;
student["Bob"]["English"] = 92;
// 输出学生信息
cout << "学生信息:" << endl;
for (auto it = student.begin(); it != student.end(); it++) {
cout << it->first << ":" << endl;
for (auto it2 = it->second.begin(); it2 != it->second.end(); it2++) {
cout << " " << it2->first << " " << it2->second << endl;
}
}
// 查找学生信息
cout << "查找学生信息:" << endl;
if (student.find("Alice") != student.end()) {
cout << "Alice的信息:" << endl;
for (auto it = student["Alice"].begin(); it != student["Alice"].end(); it++) {
cout << " " << it->first << " " << it->second << endl;
}
} else {
cout << "查无此人" << endl;
}
// 修改学生信息
cout << "修改学生信息:" << endl;
if (student.find("Bob") != student.end()) {
student["Bob"]["English"] = 90;
cout << "Bob的信息修改成功:" << endl;
for (auto it = student["Bob"].begin(); it != student["Bob"].end(); it++) {
cout << " " << it->first << " " << it->second << endl;
}
} else {
cout << "查无此人" << endl;
}
// 删除学生信息
cout << "删除学生信息:" << endl;
if (student.find("Charlie") != student.end()) {
student.erase("Charlie");
cout << "Charlie的信息删除成功" << endl;
} else {
cout << "查无此人" << endl;
}
return 0;
}
```
输出结果为:
```
学生信息:
Alice:
English 85
Math 90
Bob:
English 92
Math 95
查找学生信息:
Alice的信息:
English 85
Math 90
修改学生信息:
Bob的信息修改成功:
English 90
Math 95
删除学生信息:
查无此人
```
在这个例程中,我们首先定义了一个嵌套的map,表示学生的信息。然后,我们使用了一个嵌套的循环遍历这个map,并输出了所有学生的信息。
接着,我们使用find函数查找学生信息。如果查找到了学生信息,我们就使用一个循环遍历这个学生的科目和分数,并输出结果。否则,就输出“查无此人”。
然后,我们使用一个嵌套的操作符[]修改了Bob的英语成绩,并使用一个循环遍历Bob的科目和分数,并输出结果。
最后,我们使用erase函数删除了一个不存在的学生信息,然后输出“查无此人”。
opencv加速warpAffine WARP_INVERSE_MAP例程C++
以下是使用OpenCV加速warpAffine函数的WARP_INVERSE_MAP示例代码:
```c++
#include <opencv2/opencv.hpp>
int main() {
cv::Mat src = cv::imread("input.jpg");
cv::Mat dst(src.size(), src.type());
// 定义仿射矩阵
cv::Point2f src_points[3] = {cv::Point2f(0, 0), cv::Point2f(src.cols - 1, 0), cv::Point2f(0, src.rows - 1)};
cv::Point2f dst_points[3] = {cv::Point2f(0, 0), cv::Point2f(src.cols - 1, 0), cv::Point2f(0, src.rows - 1)};
cv::Mat warp_mat = cv::getAffineTransform(src_points, dst_points);
// 加速warpAffine函数
cv::Mat inv_warp_mat;
cv::invertAffineTransform(warp_mat, inv_warp_mat);
cv::warpAffine(src, dst, inv_warp_mat, src.size(), cv::WARP_INVERSE_MAP);
cv::imwrite("output.jpg", dst);
return 0;
}
```
在这个例子中,我们首先读取了一张名为“input.jpg”的图像。然后,我们定义了一个仿射矩阵,并使用OpenCV的getAffineTransform函数将其计算出来。接着,我们使用invertAffineTransform函数计算出反转的仿射矩阵,并将其用于加速warpAffine函数。最后,我们将输出写入到名为“output.jpg”的图像文件中。
值得注意的是,我们使用的是WARP_INVERSE_MAP标志来加速warpAffine函数,这个标志告诉OpenCV我们正在使用反转的仿射矩阵。这使得OpenCV能够跳过一些计算,从而加速函数执行。
阅读全文