仅当值不在数组中时才向数组添加值

时间:2016-07-21 20:07:04

标签: c++ arrays

到目前为止,我的代码只能防止两个以上的重复,但由于某种原因,它确实允许两个值相同。

  closePrint: function () {
    document.body.removeChild(this.oHiddFrame.__container__);
  },

  setPrint: function () {
    this.contentWindow.__container__ = this;
    this.contentWindow.onbeforeunload = this.closePrint;
    this.contentWindow.onafterprint = this.closePrint;
    this.contentWindow.focus();
    this.contentWindow.print();
  },

  printDocument: function (url) {
    var oHiddFrame = document.createElement("iframe");
    oHiddFrame.onload = this.setPrint;
    oHiddFrame.style.visibility = "hidden";
    oHiddFrame.style.position = "fixed";
    oHiddFrame.style.right = "0";
    oHiddFrame.style.bottom = "0";
    oHiddFrame.src = url;
    document.body.appendChild(oHiddFrame);
  },

2 个答案:

答案 0 :(得分:0)

如果您使用的是命名空间std,我建议如下:

bool check = find(begin(array), end(array), x) != end(array);

如果找不到x,find将返回它检查的最后一个位置的1位置。

if(!check)
   *add the element*

如果它是动态的,我建议使用矢量。

答案 1 :(得分:0)

为作业使用正确的工具,在这种情况下(如@ tobi303指出)a std::set,它本身可以防止同一项目的多个实例存在于容器内。

在您的情况下,您可以查看插入是否成功,如果不是,则打印通知:

if(!letters.insert(letter).second) std::cout << "That letter has already been used\n";

其中lettersstd::set<char>(假设它是您问题中的char容器,它并不完全清楚)而letter是{{} 1}}你试图插入。 char会返回std::set::insert,其第二个值为std::pair,表示插入是否成功。