c++ 大数据 hash_map-hash_map,unordered_map以string作为键,插入一千多万条数据后崩溃

问题描述

hash_map,unordered_map以string作为键,插入一千多万条数据后崩溃

代码:
#include "stdafx.h"
#include"iostream"
#include
#include
#include
#include
#include
using namespace std;

typedef hash_map myMap;
void CharsAllSequen(myMap &resultMap, string &str, unsigned int n, double defaultVal);
void Clear0ForStrQuen(myMap &resultMap);

int main()
{

myMap totalMap;
myMap resultMap;
string str;
CharsAllSequen(resultMap, str, 6, 0.00323223);
    stringstream ss;
for (int i = 0; i < 3000; i++)
{
    myMap::iterator iter;
    for (iter = resultMap.begin(); iter != resultMap.end(); ++iter)
    {
        string strTemp = iter->first;
        ss.str("");
        ss.clear();
        ss << "_";
        ss << i;
        strTemp += ss.str();
        totalMap.insert(myMap::value_type(strTemp, iter->second + i / 3001.0));
    }
}

return 0;

}

void Clear0ForStrQuen(myMap &resultMap)
{
myMap::iterator iter = resultMap.begin();
while (iter!=resultMap.end())
{
iter->second = 0;
++iter;
}
}
//获取特定长度,由0,1,2,3四个字符组成的字符串,比如010203,作为key,值设置为defaultVal
void CharsAllSequen(myMap &resultMap, string &str, unsigned int n, double defaultVal)
{
if (n==0)
{
if (str.size()>0)
{
resultMap.insert(myMap::value_type(str, defaultVal));
}
else
{
return;
}

}
else
{
    for (int i = 0; i < 4; i++)
    {
        stringstream ss;
        ss << i;
        string temp = ss.str();
        str.append(temp);
        CharsAllSequen(resultMap, str, n - 1, defaultVal);
        str = str.substr(0, str.size() - 1);
    }
}

}

解决方案

引发这个错误的原因是内存不足,在诊断工具里看下内存吧

解决方案二:

map hash_map unordered_map map, hash_map,unordered_map
map, hash_map,unordered_map

解决方案三:

http://bbs.csdn.net/topics/330220139

时间: 2024-09-20 00:57:58

c++ 大数据 hash_map-hash_map,unordered_map以string作为键,插入一千多万条数据后崩溃的相关文章

极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)     实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方法所耗费的时间.     本实验中所用到工具为VS2008和SQL SERVER 2000.SQL SERVER 2008,分别使用5中方法将100万条数据导入SQL 2000与SQL 2008中,实验环境是DELL 2850双2.0GCPU,2G内存的服务器.感兴趣的朋友可以下载源代码自己

Js表格万条数据瞬间加载实现代码

 一条数据创建一行,如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天,下面有个不错的方法,大家可以参考下 Js表格,万条数据瞬间加载    在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行.  于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天    受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话

Js表格万条数据瞬间加载实现代码_javascript技巧

Js表格,万条数据瞬间加载 在Ajax动态加载数据的实际应用中,大家都习惯了一种思维方式:一条数据创建一行. 于是如果数量大的时候,一次性要加载完数据的话,浏览器就会卡上半天 受Flex的DataGrid控件的启发,在Flex的DataGrid控件中,展示数据的方法并不是有多少条数据就创建多少行,它最多只创建你在界面上所看到的十几二十行(假设为n行),如果数据多的话,在滚动过程中,会从数据中抽取你应该看到的这n行数据,重新展示在已经创建好的那n行控件中. 也就是说,Flex的DataGrid控件

mysql 查询慢-mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多

问题描述 mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多 mysql 近5万条数据的表 使用联表查询 出现服务器CPU占用过多,贴大神代码求优化指点!!!!!有两张表分别为:lu_yccdd 和 lu_taizhang使用的联表查询代码:SELECT distinct(t.sc_time) sc_timecount(distinct(y.id)) totalcount(distinct(t.cdd_id)) tjjg(count(distinct(y.id))-count(

100万条数据存入mongo,通过java代码实现,要求时间在5秒之内,或者越快越好

问题描述 100万条数据存入mongo,通过java代码实现,要求时间在5秒之内,或者越快越好 通过java代码将oracle中的100万条数据查询出来,然后直接插入mongo数据库中,要求时间越短越好.我从oracle中将100万条数据查询出来花费了3秒左右.希望存入mongo的时间在5秒以内.请问各位大神有没有好的办法,谢谢. 解决方案 你可以买一个性能好一些的电脑,这样会比较快的. 解决方案二: 你把oracle查询到的数据分下类,优化时间在2秒内,存到Mongo可能会快点,最近公司也是遇

mysql 插入10万条数据 优化效率

问题描述 mysql 插入10万条数据 优化效率 public int addTypes(List<taobaoBean> babyList) { String sql = "insert into type (typeid,url) values (?,?) "; Connection conn = dbhelper.getConnection(driver,url,username,upwd); int result = 0; PreparedStatement stm

c# 4.0-Parallel.For并行录入10万条数据出错

问题描述 Parallel.For并行录入10万条数据出错 用了一个CodeTimer测试性能,在循环方法体的时候,老大说让用Parallel.For代替for循环. 结果瞬间快了100倍的测试速度,但是又出现一个问题了,数据录不进去了. 经常循环10万次才录入一条,断点调试后发现就第一条录进去了,后面的都是数据库连接池错误. 我想问下用并行之后,这种情况是正常的吗,如果不正常,有什么方法解决呢 代码中的Time()的三个参数,第一个是方法名(无视),第二个是循环次数,第三个是方法体,关于Tim

3分钟如何向MySQL数据库中插入100万条数据

一.编写测试案例向MySQL数据库中插入百万条数据.测试数据表建表脚本如下:use db_xk; drop table if exists tb_test2; create table tb_test2 ( id int primary key auto_increment, subject varchar(50) not null, description varchar(200) not null, teacher_id int(10) zerofill not null, student_

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名    [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键    [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的