C++;异质词典 我是C++新手,最近发现我们可以通过使用以下代码初始化字符串集合: map-myArray; myArray[“key1”]=“value1”; myArray[“key2”]=“value2”; 不能将myArray声明为 map <string, map <string,string> > myArray; map-myArray;
显然你不能做C++;异质词典 我是C++新手,最近发现我们可以通过使用以下代码初始化字符串集合: map-myArray; myArray[“key1”]=“value1”; myArray[“key2”]=“value2”; 不能将myArray声明为 map <string, map <string,string> > myArray; map-myArray;,c++,arrays,multidimensional-array,C++,Arrays,Multidimensional Array,显然你不能做myArray[“key1”]=“value1”,但这是一种强类型语言的权衡。听起来像是你想要的 std::map<std::string, boost::any> myArray; std::map myArray; 这将使对应于不同键的值呈现出不同的类型。由于提问者似乎已经接受了其中一个答案,这只是一个例子 补充资料。 如果允许使用Boost,则可能满足此目的。 例如,下面的代码打印出问题中的条形图 #include <boost/variant.hpp&g
myArray[“key1”]=“value1”代码>,但这是一种强类型语言的权衡。听起来像是你想要的
std::map<std::string, boost::any> myArray;
std::map myArray;
这将使对应于不同键的值呈现出不同的类型。由于提问者似乎已经接受了其中一个答案,这只是一个例子
补充资料。
如果允许使用Boost
,则可能满足此目的。
例如,下面的代码打印出问题中的条形图
#include <boost/variant.hpp>
#include <map>
#include <string>
#include <iostream>
int main() {
using namespace std;
using namespace boost;
typedef map<string,string> map_t;
map <string, variant<string, map_t> > myArray;
map_t secondArray;
secondArray["foo"] = "bar";
myArray["key1"] = "value1";
myArray["key2"] = secondArray;
cout<<get< map_t >( myArray["key2"] )["foo"]<<endl;
}
#包括
#包括
#包括
#包括
int main(){
使用名称空间std;
使用名称空间boost;
类型定义映射图;
映射myArray;
映射二次数组;
第二个数组[“foo”]=“bar”;
myArray[“key1”]=“value1”;
myArray[“key2”]=secondArray;
cout@Cat映射是关联数组,不是吗?@anirudh4444它们是关联数组,但术语数组本身通常与常量时间元素访问相关联。@anirudh4444:那么,关联数组不是数组(反正我不喜欢这个名称).阵列具有连续存储。映射通常不具有连续存储。请举个例子。