Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++;异质词典 我是C++新手,最近发现我们可以通过使用以下代码初始化字符串集合: map-myArray; myArray[“key1”]=“value1”; myArray[“key2”]=“value2”; 不能将myArray声明为 map <string, map <string,string> > myArray; map-myArray;_C++_Arrays_Multidimensional Array - Fatal编程技术网

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:那么,关联数组不是数组(反正我不喜欢这个名称).阵列具有连续存储。映射通常不具有连续存储。请举个例子。