C++关联数组
C++標準庫:std_map作為一個關聯數組
摘要:std::map作為一個容器存在一個典型應用就是作為關聯數組來作用。在諸如Java等等語言中,關聯數組廣泛存在。std::map是一個容器,在它的概念框架中存在兩個詞:鍵和值,std::map把一個鍵與一個值相對,它相當于一個字典,把一個索引和一人內容對應起來。一般情況下,std::map用一個平衡二叉樹來實現的,所以它的大部分操作都可以log(n)的時間里完成。下面讓我們看看其中的簡單使用:
#include<map>//定義一個整數到整數的映射
//其中前一個鍵,后一個是值
std::map<int, int> map;
//要創建一個簡單的映射,可以這樣
//下面兩句在map創建兩個結點,分別完成預期的映射
map[0]=12;
map[99]=13;
?
std::map是以結點的形式存儲其中的元素的,我們可以手工制造一個結點然后放到容器中或者從容器刪除相關條件的結點,這些都由“鍵”來驅動的,也就是說一個操作你往往要告訴std::map是針對哪個鍵進行的。
下面給出一些典型的代碼:
#include<map>#include<string>
#include<utility>
#include<iostream>
std::map<std::string, int> string_int;
string_int[“one”]=12;
string_int[“name”]=88;
//插入元素的另一種方法
string_int.insert(std::make_pair(std::string(“ok”), 0));
//搜索指定的鍵
std::map<std::string, int>::const_iterator b=string_int.find(“ok”);
//如果找到
if(b!=string_int.end())
{
? ? ? ? std::cout << “ok: “ << *b << std::endl;
}
//刪除指定元素,根據迭代器
string_int.erase(b);
//刪除指定元素,根據鍵,返回刪除的個數
//對于std::map而言只能是0或1,但對于std::mutimap而言就不一定了
size_t n=string_int.erase(“one”);
c++的std::map類通過[]訪問
#pragma warning(disable:4786) ? #include <map> #include <string> #include <iostream>int main() { using namespace std;
map<int, string> names; ? // 元素追加 names.insert( map<int, string>::value_type( 10, “aaa” ) ); names.insert( map<int, string>::value_type( 30, “ccc” ) ); names.insert( map<int, string>::value_type( 50, “eee” ) ); names.insert( map<int, string>::value_type( 40, “ddd” ) ); names.insert( map<int, string>::value_type( 20, “bbb” ) );
// 變更值 names[50] = “fff”; //輸出 cout << names[10] << endl; cout << names[20] << endl; cout << names[30] << endl; cout << names[40] << endl; cout << names[50] << endl;
return 0; }
其他關聯數組教程
總結
- 上一篇: ML-Agents训练智能AI使用技巧
- 下一篇: 乖离率背离公式_股价偏离率是什么 BIA