std :: find()无法使用gcc进行编译

内森
#include <iostream>
#include <array>

using namespace std;

int main()
{
    array<int, 5> a = {1,2,3,4,5};

    auto it = find(a.cbegin(), a.cend(), 3);
    cout << *it << endl;
    return 0;
} 

该程序在VS 2015上运行良好,但无法使用gcc进行编译。代码是否错误?错误消息是:

error: no matching function for call to ‘find(std::array<int, 5ul>::const_iterator, std::array<int, 5ul>::const_iterator, int)’
炸鱼

你需要

#include <algorithm>

这就是std::find住所。使用MSVC似乎可以通过<iostream>或中的某些可传递包含来获得它<array>

我还建议完全限定标准库组件的名称,例如std::arraystd::find,而不是using namespace std;看到这里这里很明显,您正在尝试使用标准库find,而不是其他

find在尝试打印之前,最好检查一下您是否确实找到了某些东西。如果尝试find使用不存在的值,则打印该值将导致Undefined Behavior,这是一件坏事。

auto it = std::find(a.cbegin(), a.cend(), 3);
if ( a.cend() == it ) {
    std::cout << "Couldn't find value!\n";
    return 1;
}
std::cout << *it << '\n';
return 0;

我也不是的忠实粉丝std::endl您知道它写入a'\n' 并刷新流吗?许多人没有意识到它可以做两件事,这使得您的代码意图不太清楚。当我阅读它时,我不知道写它的人是否真的想冲洗流,或者只是不知道要冲洗std::endl我更喜欢只用

std::cout << '\n';

,或者如果您确实确实想手动刷新流(不太可能),请对其进行明确说明:

std::cout << '\n' << std::flush;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

gsl :: span无法使用std :: regex进行编译

来自分类Dev

std :: bind无法在MSVC上使用std :: atomic_bool&进行编译

来自分类Dev

使用GCC 4.8编译时,无法在向量上执行std :: swap

来自分类Dev

在std :: map中使用std :: less无法编译

来自分类Dev

Boost池分配器无法在g ++中使用std :: allocate_shared进行编译

来自分类Dev

使用Bitfields中的参数进行构造时,std :: make_shared无法编译

来自分类Dev

constexpr静态std :: array <const char *,5>无法使用MSVC2013进行编译

来自分类Dev

在gcc 4.7中使用std :: bind编译错误

来自分类Dev

无法使用gcc-7进行编译

来自分类Dev

为什么std :: make_shared无法使用已删除的运算符new进行类型编译?

来自分类Dev

无法在GCC 5.3.0上使用std :: async运行代码

来自分类Dev

使用成员函数创建std :: function无法编译

来自分类Dev

使用std :: span的泛型函数无法编译

来自分类Dev

警告:使用gcc -std = c89 -g –pedantic filename.c进行编译时,来自不兼容指针类型的赋值

来自分类Dev

gcc 7.2.0无法识别std :: expf和std :: logf

来自分类Dev

混合std :: move()和std :: thread无法编译

来自分类Dev

std :: forward_list.push_front(std :: thread)无法编译

来自分类Dev

std :: forward_list.push_front(std :: thread)无法编译

来自分类Dev

无法编译使用std :: io的代码-std :: io中没有文件

来自分类Dev

GCC无法解析正确的std :: accumulate

来自分类Dev

C ++ std :: bind通用引用无法编译

来自分类Dev

std :: multiset比较器无法编译

来自分类Dev

使用gcc编译代码后,不会输出std :: out_of_range异常字符串

来自分类Dev

使用MINGW gcc编译时,不会为std :: string调用重载的new运算符

来自分类Dev

是否可以在gcc编译器中使用clang std库?

来自分类Dev

使用gcc编译代码后,不会输出std :: out_of_range异常字符串

来自分类Dev

std ::任何包含std :: tuple <std :: any>的编译失败

来自分类Dev

无法在Ubuntu 12.04上使用GCC进行编译

来自分类Dev

无法在Ubuntu 12.04上使用GCC进行编译

Related 相关文章

  1. 1

    gsl :: span无法使用std :: regex进行编译

  2. 2

    std :: bind无法在MSVC上使用std :: atomic_bool&进行编译

  3. 3

    使用GCC 4.8编译时,无法在向量上执行std :: swap

  4. 4

    在std :: map中使用std :: less无法编译

  5. 5

    Boost池分配器无法在g ++中使用std :: allocate_shared进行编译

  6. 6

    使用Bitfields中的参数进行构造时,std :: make_shared无法编译

  7. 7

    constexpr静态std :: array <const char *,5>无法使用MSVC2013进行编译

  8. 8

    在gcc 4.7中使用std :: bind编译错误

  9. 9

    无法使用gcc-7进行编译

  10. 10

    为什么std :: make_shared无法使用已删除的运算符new进行类型编译?

  11. 11

    无法在GCC 5.3.0上使用std :: async运行代码

  12. 12

    使用成员函数创建std :: function无法编译

  13. 13

    使用std :: span的泛型函数无法编译

  14. 14

    警告:使用gcc -std = c89 -g –pedantic filename.c进行编译时,来自不兼容指针类型的赋值

  15. 15

    gcc 7.2.0无法识别std :: expf和std :: logf

  16. 16

    混合std :: move()和std :: thread无法编译

  17. 17

    std :: forward_list.push_front(std :: thread)无法编译

  18. 18

    std :: forward_list.push_front(std :: thread)无法编译

  19. 19

    无法编译使用std :: io的代码-std :: io中没有文件

  20. 20

    GCC无法解析正确的std :: accumulate

  21. 21

    C ++ std :: bind通用引用无法编译

  22. 22

    std :: multiset比较器无法编译

  23. 23

    使用gcc编译代码后,不会输出std :: out_of_range异常字符串

  24. 24

    使用MINGW gcc编译时,不会为std :: string调用重载的new运算符

  25. 25

    是否可以在gcc编译器中使用clang std库?

  26. 26

    使用gcc编译代码后,不会输出std :: out_of_range异常字符串

  27. 27

    std ::任何包含std :: tuple <std :: any>的编译失败

  28. 28

    无法在Ubuntu 12.04上使用GCC进行编译

  29. 29

    无法在Ubuntu 12.04上使用GCC进行编译

热门标签

归档