获取大于值c ++的所有向量元素

ale*_*ark 0 c++ vector

我有一个漂浮的矢量,如:

vector<float> v = [0.4 0.2 0.8 0.1 0.5 0.6];
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的向量(称之为目标):

vector<float> target;
Run Code Online (Sandbox Code Playgroud)

仅包含大于0.5的元素.我在这篇文章中尝试过这一行

copy_if(v.begin(), v.end(), back_inserter(target), bind(less<float>(), 0.5, placeholders::_1));
Run Code Online (Sandbox Code Playgroud)

但是当我尝试打印出目标中的元素时,我总是获得n次的第一个元素(v中的n个元素大于0.5).

打印以这种方式完成:

for (auto i = target.begin(); i != target.end(); ++i) {
    cout << target[*i] << endl;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.

Fra*_*eux 6

在您的输出中,i是一个迭代器.target[*i]将元素打印在与位置元素相等i的位置.由于您的值都小于1且大于0,因此*i始终等于0.这会导致将元素打印为位置0,其次数等于向量中的元素数.

请尝试以下方法:

for (auto i = target.begin(); i != target.end(); ++i) {
    cout << *i << endl;
}
Run Code Online (Sandbox Code Playgroud)

或者干脆:

for (auto i : target) {
    cout << i << endl;
}
Run Code Online (Sandbox Code Playgroud)