STL - double vector 数组中前导零的问题

标签 stl vector c++

我正在尝试计算 double vector (称为 A)的标准差。 现在我有一个名为 StDev 的函数可以执行此操作。然而,第一 vector A 的几个元素为零,我需要删除这些元素。为此我 创建一个子数组,然后将其传递给我的 StDev 函数,如下所示:

 std::vector<double> Array(find_if(Data.begin(), Data.end(), std::bind1st (std::not_equal_to<double>(), 0.0)), Data.end());     

 double standard_deviation = StDev(Array); 

有没有一种方法可以做到这一点而不必创建 vector “数组” 只使用一次。我能以某种方式直接传递所需的子数组吗?

谢谢!

最佳答案

如果您可以修改您的 StDev 函数以获取迭代器范围而不是整个容器,您可以很容易地做到这一点:

template <typename ForwardIt>
std::iterator_traits<ForwardIt>::value_type 
StDev(ForwardIt first, ForwardIt last) { /* ... */ }

// called as:
double stdev = StDev(Data.begin(), Data.end());

// or:
double stdev = StDev(
    find_if(Data.begin(), Data.end(), 
            std::bind1st(std::not_equal_to<double>(), 0.0)), 
    Data.end()); 

关于STL - double vector 数组中前导零的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3601161/

相关文章:

c++ - 在保留列的同时对二维 vector 进行排序

c++ - 可变递归模板

c++ - 使用 STL 堆栈作为 C++ 类的成员

c++ - 实现流操作符时编译错误

c++ - STL 允许使用指向不同 map 的迭代器删除 map 的键/值吗?

c++ - 区间范围树数据结构c++

c++ - QTreeWidget通过一个函数传递多个项目(多个选择)

c++ - 倒序打印 vector

c++ - 映射/设置迭代器不可递增

c++ - 比较 C++ 中的函数,简而言之?