到目前为止,我的代码只能防止两个以上的重复,但由于某种原因,它确实允许两个值相同。
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);
},
答案 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";
其中letters
是std::set<char>
(假设它是您问题中的char
容器,它并不完全清楚)而letter
是{{} 1}}你试图插入。 char
会返回std::set::insert
,其第二个值为std::pair
,表示插入是否成功。