的所有元素的一個子元素添加恆定在四處尋找後,計算器,我發現這個優雅的解決方案到的std ::矢量
transform(myvec.begin(), myvec.end(), myvec.begin(),
bind2nd(std::plus<double>(), 1.0));
添加一個常數一個std中的所有元素::包含雙打的向量。 現在,我與關鍵點(OpenCV的關鍵點)我有一個std::vector<cv::keypoints>
這些關鍵點包含很多元素,如鉑(在X,Y的位置),大小,角度等等 工作,我想添加一個常數所有的Pt這反過來也包含兩個其他paramters(x和y)
我試圖做
std::transform(keypoints1.pt.x.begin(), keypoints1.pt.x.end(),
keypoints1.pt.x.begin(), std::bind2nd(std::plus<double>(), myconstantX));
但是,這並不編譯。不幸的是,我對STL結構的複雜訪問不太舒服。
你知道如何在不使用for循環的情況下做到這一點嗎?
感謝
假設我發現這比'for_each'和/或'std :: transform'版本(我這樣做)更容易閱讀。有什麼情況下我仍然想使用'for_each'或'std :: transform'? – Nemo
@Nemo:我相信我們可以發明一些STL算法可能更好的情況。但是我沒有立即想到,所以或許我們可以同意KISS,並且有朝一日能夠看到STL的東西,如果我們真的不能用簡單的方法。 –