生成字符串束的标识号

时间:2018-12-07 11:01:59

标签: c++ string random hashable

假设您有一个名为bundle的结构,它由string个对象组成。没有关于束将包含多少个字符串的准确知识,您需要为每个束生成标识号,以便区分它们。

例如,两个捆绑包有5个字符串对象,而这两个对象中只有四个是公共的。

注1:我需要一个标识号,因为在此过程中我会遇到很多捆,其中一些捆具有完全相同的字符串。

注2:我正在使用c ++,据我所知,在c ++中没有哈希或类似的东西。

How can we generate identification number ?

我想到的唯一解决方案是将字符串对象串联在一起。我认为没有其他解决方案。也许用另一种格式或数据结构表示字符串可以使生成ID更加容易。

1 个答案:

答案 0 :(得分:-1)

您可以使用static int counter

#include <iostream>
static int counter = 0;
struct bundle
{
    bool operator==(bundle& other){ return this->id == other.id; }

    int id = counter++;
    std::string a, b, c, d, e;
};

int main()
{
    bundle b1, b2, b3, b4, b5;
    std::cout << b1.id << ' ' << b5.id << std::endl;    // 0 4
    std::cout << (b1 == b5) << std::endl;               // 0
    b1 = b5;
    std::cout << (b1 == b5) << std::endl;               // 1
    return 0;
}