stl 容器怎样解决这个问题。

hjjdebug 2014-01-01 09:14:11
先上部分代码来说明问题。

#include "stdafx.h"

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;

typedef struct tagItem{
string name;
int value;
}Item;

typedef struct tagSum{
string name;
vector<int> vec;
}Sum;

Item items[] = {
{"he", 1},
{"he", 4},
{"he", 7},
{"wang", 2},
{"wang", 5},
{"wang", 8}
};

// 需要生成两个对象。
// Sum sum1 = {"he", [1,4,7]};
// Sum sum2 = { "wang", [ 2,5,8 ]}


int _tmain(int argc, _TCHAR* argv[])
{
Sum sum;

printf("press a key to exit\n");
_getch();
return 0;
}



就好比说,一个人,1号花了1块钱,2号花了4块钱,3号花了7块钱,
另一个人,1号花了2块钱,2号花了5块钱,3号花了8块钱,
这些数据,我们已经把它装到items 变量了,
现在想统计一下, 每一个人,每天花了多少钱
其结果应该是 {"he",[1,4,7]}, {"wang, [2,5,8]},
假如有第三人, 或可能是{"li",[4,7,8,9,10]},
总之,是一个名称后面对应着一个数组。

这个问题, 如果用纯c 一刀一枪的,又是分配内存,又是copy 名称,太累。
感觉用stl 的map, 稍稍insert 一下,可能就能解决问题。一个键是名称,
一个值是数组。
stl我不熟,哪位肯不吝赐教!
...全文
132 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjjdebug 2014-01-01
  • 打赏
  • 举报
回复
感谢诸位,结贴!其中French_fries 表达最清楚了。
Burcy Wen 2014-01-01
  • 打赏
  • 举报
回复
map<string, vector<float> > item; item["he"].push_back(1); item["he"].push_back(2); item["he"].push_back(3); item["wang"].push_back(2); item["wang"].push_back(5); item["wang"].push_back(8);
图灵狗 2014-01-01
  • 打赏
  • 举报
回复
用map<string, list<int>>这样的结构,map和list的用法可以参考STL手册。
引用 楼主 hejinjing_tom_com 的回复:
先上部分代码来说明问题。

#include "stdafx.h"

#include <iostream>
#include <string>
#include <vector>
#include <map>
using namespace std;

typedef struct tagItem{
	string name;
	int value;
}Item;

typedef struct tagSum{
	string name;
	vector<int> vec;
}Sum;

Item items[] = {
	{"he", 1}, 
	{"he", 4}, 
	{"he", 7},
	{"wang", 2}, 
	{"wang", 5}, 
	{"wang", 8}
};

// 需要生成两个对象。
// Sum sum1 = {"he", [1,4,7]};
// Sum sum2 = { "wang", [ 2,5,8 ]}


int _tmain(int argc, _TCHAR* argv[])
{
	Sum sum;

	printf("press a key to exit\n");
	_getch();
	return 0;
}


就好比说,一个人,1号花了1块钱,2号花了4块钱,3号花了7块钱, 另一个人,1号花了2块钱,2号花了5块钱,3号花了8块钱, 这些数据,我们已经把它装到items 变量了, 现在想统计一下, 每一个人,每天花了多少钱 其结果应该是 {"he",[1,4,7]}, {"wang, [2,5,8]}, 假如有第三人, 或可能是{"li",[4,7,8,9,10]}, 总之,是一个名称后面对应着一个数组。 这个问题, 如果用纯c 一刀一枪的,又是分配内存,又是copy 名称,太累。 感觉用stl 的map, 稍稍insert 一下,可能就能解决问题。一个键是名称, 一个值是数组。 stl我不熟,哪位肯不吝赐教!
未注销 2014-01-01
  • 打赏
  • 举报
回复
这个意思?
map<char*, int*> items;
	int arr1[] = {1, 4, 7};
	int arr2[] = {2, 5, 8};
	items.insert(make_pair<char*, int*>("he",arr1)); 
	items.insert(make_pair<char*, int*>("wang",arr2)); 
vrace 2014-01-01
  • 打赏
  • 举报
回复
map<string, vector<float> >

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧