簡體   English   中英

獲取所有大於值的向量元素c ++

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM