[英]get all vector elements greater than a value c++
我有一個像float的向量:
vector<float> v = [0.4 0.2 0.8 0.1 0.5 0.6];
我想創建一個新的向量(稱為目標):
vector<float> target;
僅包含大於0.5的那些元素。 我在這篇文章中嘗試了這一行
copy_if(v.begin(), v.end(), back_inserter(target), bind(less<float>(), 0.5, placeholders::_1));
但是當我嘗試打印目標中的元素時,我總是獲得n次第一個元素(v內n個元素的數量大於0.5)。
打印是通過以下方式完成的:
for (auto i = target.begin(); i != target.end(); ++i) {
cout << target[*i] << endl;
}
提前致謝。
在您的輸出中, i
是一個迭代器。 target[*i]
將在等於i
位置的元素的位置打印元素。 由於您的值均小於1且大於0,因此*i
始終等於0。這將導致元素在位置0的打印次數等於矢量中元素的數量。
嘗試以下方法:
for (auto i = target.begin(); i != target.end(); ++i) {
cout << *i << endl;
}
或者簡單地:
for (auto i : target) {
cout << i << endl;
}
您可以使用lambda輕松完成
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int main()
{
vector<float> v {0.4,0.2,0.8,0.1,0.5,0.6};
vector<float> target;
copy_if(v.begin(), v.end(), back_inserter(target),[](float n ){ return n > 0.5;});
for (auto i = target.begin(); i != target.end(); i++) {
cout << *i << endl;
}
}
輸出量
0.8
0.6
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.