将对添加到向量C ++

时间:2017-10-25 15:02:55

标签: c++ loops vector boolean std-pair

所以,我正在尝试将对添加到向量中,但它们必须成功通过2个条件:

  1. 它们的重量或第二个值大于或等于零。如果出现错误则抛出字符串错误。
  2. 向量不得包含密钥或第一个值
  3. 具体必须在函数返回void类型时完成,但由于某种原因,这个逻辑似乎不起作用。有什么建议吗?

    void add(KEY_T key, WEIGHT_T weight)
        {
            bool contains = false;
    
            if (weight < 0)
            {
    
                std::cout << "ERROR, invalid weight" << std::endl; //Throw error.
            }
    
            for (int x = 0; x < _valueToWeightMap.size(); x++)
            {
                if (_valueToWeightMap[x].first == key)
                {
                    contains = true;
                }
            }
    
            if (weight > 0 && contains == false)
                {
    
                _valueToWeightMap.push_back(std::make_pair(key, weight));
    
                }
    
            }
    

    这是主要的:

    int main()
    {
        DiscreteDistribution<std::string> dist1;
    
        dist1.add("Helmet", -1);
        dist1.add("Gloves", 5);
        dist1.add("Gloves", 5);
        dist1.add("cloud", 8);
    

    出于某种原因,当我尝试将Helmet添加为-1时,我没有收到错误。有什么建议吗?

1 个答案:

答案 0 :(得分:1)

这一行:

        std::cout << "ERROR, invalid weight" << std::endl; //Throw error.

不执行评论所说的内容(抛出错误)。这一行:

        throw "ERROR, invalid weight"; //Throw error.

一样。但是,我 强烈 建议您只抛出从std::exception派生的异常。这样:

        throw std::range_error("ERROR, invalid weight"); //Throw error.

更好。