请完整写出如下代码:将一组string数据存储到相应的map中,并且遍历这个map输出相应的key和value。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请完整写出如下代码:将一组string数据存储到相应的map中,并且遍历这个map输出相应的key和value。相关的知识,希望对你有一定的参考价值。
参考技术A Map<String, String> map=new HashMap<String, String>();String[] abc=new String[]"a","b","c","d","e";
for (int i = 0; i < abc.length; i++)
// System.out.println(abc[i]);
map.put(abc[i]+""+i, abc[i]);
for(Map.Entry<String, String> entry:map.entrySet())
System.out.println(entry.getKey()+":"+entry.getValue());
写的一段小代码,不知道是不是你需要的。希望能帮到你。
Map循环的参考:http://blog.csdn.net/yangbobo1992/article/details/8014487
我可以将一组符号传递给宏吗?
【中文标题】我可以将一组符号传递给宏吗?【英文标题】:Can I pass an array of symbols to a macro? 【发布时间】:2013-06-04 16:05:14 【问题描述】:我正在将字符串映射中的一些数据解析为不同的结构,每个结构都有自己的一组成员变量。设置可能是这样的:
struct AStruct
int a;
float b;
;
map<string,string> aMap;
aMap["a"] = "3";
aMap["b"] = "2.42";
struct BStruct
string a;
char b;
;
map<string,string> bMap;
bMap["a"] = "asdf";
bMap["b"] = 'k';
由于结构体很多,但包含的原语很少,我创建了一组有用的模板化解析函数:
template <typename T>
void parse(string origin, T& dest);
现在,为了避免自己必须定义不同的函数来为每个结构分配值,我可以使用宏,如下所示:
#define ASSIGN(map, dest, param0Name, param1Name) \
dest.param0Name = map[#param0Name]; \
dest.param1Name = map[#param1Name]; \
并像这样分配:
AStruct myA;
ASSIGN(aMap, myA, a, b);
这是一个很大的帮助。但实际上我的结构都有不同数量的成员,需要在每种情况下定义一个新的宏。
有没有办法可以将一组符号传递给宏并遍历它们?
类似这样的:
ASSIGN(map, dest, param0Name, param1Name, param2Name )
【问题讨论】:
你可能想看看 Boost.PP :boost.org/doc/libs/1_53_0/libs/preprocessor/doc/index.html 【参考方案1】:我会说你不走运的宏。确实有允许传递参数的可变参数宏,但这是你可以用它们做的所有事情。
我试过了
#define B(x, y) int x = y;
#define A(x, y, ...) B(x, y) A(__VA_ARGS__)
void f()
A( g, 1, h, 2);
显然不起作用。向预处理器添加东西的建议很常见,但通常会被拒绝。
【讨论】:
你是对的,没有可变参数函数就没有访问每个元素的机制。 尽管在这种情况下对我来说很有用,但人们不愿意向预处理器添加东西是公平的,因为它会引入许多使事情变得更难理解的用例。以上是关于请完整写出如下代码:将一组string数据存储到相应的map中,并且遍历这个map输出相应的key和value。的主要内容,如果未能解决你的问题,请参考以下文章