小编POD*_*POD的帖子

C++的矢量或地图或哈希地图?

我有大量的记录,比如大约4,000,000,我想反复解决它们并将信息放在与该记录相关联的类中.我不确定应该使用哪种数据结构?我应该使用矢量,地图还是哈希地图.我不需要插入记录,但我需要读取一个包含这些记录编号(或名称)集合的表,然后获取一些链接到该记录的数据并对它们执行一些处理.地图上的发现是否足够快,不能用于此示例的哈希图?记录有一个类作为其结构,在使用具有类作为其值的map或hashmap之前我没有做过任何事情(如果可能的话).先谢谢你们.

编辑:

我现在不需要同时在内存上记录所有记录>我需要先给它一个结构,然后从一些记录中获取数据.记录的总数大约是2000万,我想读取每个原始记录,然后如果我的新地图或向量中不存在我想要创建的基本信息,并将其余数据放在那里作为一个向量.因为我有2000万条记录,所以我认为每条记录都会通过400万条记录来查找该记录的基本信息是否存在,这将是非常令人难以忍受的.我有大约400万种类型的包,每个包都可以有多种服务类型(每包约5(20/4)).我想读取每个记录,然后如果包ID不存在于向量中或我想要使用的任何内容中,并将基本信息推送到向量中,然后将与该包相关的服务保存在向量中在包类中.

c++ vector hashmap map

3
推荐指数
1
解决办法
5121
查看次数

++运算符对char*做了什么

我从网上获得了一个源代码,但有一行对我来说很模糊.我有一个功能:

double dict(const char *str1, const char *str2) {
Run Code Online (Sandbox Code Playgroud)

并且此函数中的一行为:

if (strlen(str1) != 0 && strlen(str2) != 0)
    while (prefix_length < 3 && equal(*str1++, *str2++)) prefix_length++;
Run Code Online (Sandbox Code Playgroud)

运算符++在*str1 ++和*str2 ++中做了什么?

c operators char

3
推荐指数
1
解决办法
2042
查看次数

在函数中返回向量后清除内存

我有一个处理和存储大量数据的函数,然后它将结果作为类的向量返回.存储在此函数中的数据量非常大,我希望在完成其工作后清除该函数的存储内存.是否有必要这样做(功能是否自动清除内存)还是应该通过某些功能清除内存?

更新:

vector<customers> process(char* const *filename, vector<int> ID)
{
    vector<customers> list_of_customers;
    (perform some actions)
    return list_of_customers;
}
Run Code Online (Sandbox Code Playgroud)

c++ memory-management copy function vector

2
推荐指数
1
解决办法
1407
查看次数

从向量类向量中读取数据 - c ++

我有一个由int和字符串组成的类,但我在该类中也有一个向量.我必须从文件中读取记录,然后在解析每一行之后,将信息放在我的类向量中.我必须获取ID和名称等基本包信息,然后添加随该包提供的服务,因此我可以拥有10个来自一个包的记录,但它们的服务类型不同.现在我正在尝试将数据放在每个包中并从每个元素访问数据,但是当我试图从类中的向量中获取数据时,我的编译文件崩溃了.它还打印出1233和foo,但不是测试.任何想法为什么会这样?

int main()
{
    vector<package> packs;
    package pack;
    pack.ID = 1233;
    pack.name = "foo";
    packs.push_back(pack);

    pack.putData("test",12);




     cout << packs[0].name << endl;
     cout << packs[0].ID << endl;
     cout << packs[0].bservice[0].serviceID << endl;    //[b]Crashes in this line[/b]

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

定义的类是:

class package
{
    public:

    class aservice
    {
       public:
       int serviceID;
       string othername;
    };
    int ID;
    string name;
    vector<aservice> bservice;
    void putData(string name1, int serviceID1)
    { 
        aservice obj;
        obj.serviceID = serviceID1;
        obj.othername = name1;
        bservice.push_back(obj);
    }

};
Run Code Online (Sandbox Code Playgroud)

c++ class vector

0
推荐指数
1
解决办法
397
查看次数

标签 统计

c++ ×3

vector ×3

c ×1

char ×1

class ×1

copy ×1

function ×1

hashmap ×1

map ×1

memory-management ×1

operators ×1