【问题标题】:To find duplicate in 2D Vector C++在 2D Vector C++ 中查找重复项
【发布时间】:2014-03-29 07:38:41
【问题描述】:

我编写了一个程序来查找 2D 矢量 C++ 中的重复项。我只检查了一个字段,即名称字段。这是限制重复输入的有效方法吗?

typedef vector<vector<string>> table_t;

    table_t myvec = {{"DINU","56","66","45","78","76"},
                     {"HARI","56","78","54","85","62"},
                     {"JAMES","65","34","54","64","98"},
                     {"HEARTLY","76","76","87","34","76"},
                     {"PETER","67","78","87","34","53"}};
int main(int argc, char *argv[])
{
    if(argc!=7)
    {
        cout<<"Enter 7 Fields"<<endl;
        exit(0);
    }

    string name = argv[1];
    upperto(name);

    for(size_t i=0;i<myvec.size();i++)
    {
        if(name == myvec[i][0])
        {
            id++;
        }
    }

    if(id==0)
    {
        myvec.push_back({name,argv[2],argv[3],argv[4],argv[5],argv[6]});
    }
    else
    {
        cout<<'\n'<<"Already Exist"<<endl;
    }

}

【问题讨论】:

  • 你知道std::vector&lt;&gt; 应该是operator ==,对吧?
  • 为什么没有 std::map> ?
  • 我想限制重复使用特定记录。我不希望整个记录限制重复。

标签: c++ stl duplicates stdvector


【解决方案1】:

只需创建一个输入向量并比较整个向量:

vector<string> input;

for (int i = 0; i < argc; i++)
    input.push_back(arg[i]);

for(size_t i = 0; i < myvec.size(); i++) {
    if(input == myvec[i])
        // check here
}

【讨论】:

    【解决方案2】:

    您的方法还可以,但如果您想提高效率,可以使用散列。它会在恒定的时间内给你结果。

    【讨论】:

    • 这应该是评论,绝对不是答案
    • 他要求提高效率,所以我认为这可能是答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 1970-01-01
    • 2017-09-16
    • 2013-02-21
    • 2016-06-28
    • 1970-01-01
    相关资源
    最近更新 更多