gpt4 book ai didi

c++ - std::find on std::vector< std::string > 不能在 Visual C++ 2008 中编译?

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:22 25 4
gpt4 key购买 nike

我在 Visual C++ 2008 Express Edition 上试过这段代码,但它没有编译:

#include <iostream>
#include <vector>
#include <algorithm>

int main()
{
typedef std::string Element;
typedef std::vector< Element > Vector;
typedef Vector::iterator Iterator;

Vector v;
std::find( v.begin(), v.end(), std::string( "xxx" ) );

return 0;
}

我收到以下错误:

c:\programmi\microsoft visual studio 9.0\vc\include\algorithm(40) : error C2784: 'bool  std::operator ==(const std::vector<_Ty,_Alloc> &,const std::vector<_Ty,_Alloc> &)' : could not deduce template argument for 'const std::vector<_Ty,_Alloc> &' from 'std::basic_string<_Elem,_Traits,_Ax>'

相同的代码由 gcc 编译并按预期工作。

是Visual Studio的bug吗?以及如何让我的示例在 Visual C++ 2008 上运行?

最佳答案

你忘了 #include <string> .

您必须始终包含代码所需的所有 header 。永远不要依赖有时会起作用的魔术递归包含。对于您在代码中使用的所有内容,您必须知道它的声明位置并保证声明在您的翻译单元中可见。

关于c++ - std::find on std::vector< std::string > 不能在 Visual C++ 2008 中编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13030601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com