我正在尝试使用向量,因为我刚刚开始学习但是却坚持这个错误.我试着看看cpp引用并写上它但仍然收到错误.
#include<vector>
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
vector<string> vec;
vec.push_back("First");
vec.push_back("second");
for( int i = 0; i < 4 ; i++ )
vec.push_back("RepeatTimes");
vector<string>::iterator fp = find(vec.begin(), vec.end(), "First");
for( vector<string>::iterator it = vec.begin(); it != vec.end(); it++ ) cout<<*it<<" ";
}
Run Code Online (Sandbox Code Playgroud)
错误是:
[Error] no matching function for call to 'find(std::vector<std::basic_string<char> >::iterator, std::vector<std::basic_string<char> >::iterator, const char [6])'
Run Code Online (Sandbox Code Playgroud)
你忘了<algorithm>在std::find生活中包含标题.
您还应该包括<string>访问权限std::string.
您很可能<string>间接地包含在另一个标题中,不应该依赖它.
由于您正在学习,我将进一步建议您的代码的现代替代品.
而不是一次推回一个元素,
std::vector<std::string> vec;
vec.push_back("First");
vec.push_back("second");
Run Code Online (Sandbox Code Playgroud)
你可以使用初始化列表:
std::vector<std::string> vec {"First", "Second"};
Run Code Online (Sandbox Code Playgroud)而不是使用for循环来重复添加相同的元素,
for( int i = 0; i < 4 ; i++ )
vec.push_back("RepeatTimes");
Run Code Online (Sandbox Code Playgroud)
你可以使用insert方法:
vec.insert(vec.end(), 4, "RepeatTimes");
Run Code Online (Sandbox Code Playgroud)当它们很详细并且不向代码添加任何可读性值时,请考虑推断类型名称:
auto fp = std::find(vec.begin(), vec.end(), "First");
Run Code Online (Sandbox Code Playgroud)for在迭代整个容器范围时使用基于范围的循环:
for (auto it: vec){
std::cout << it << " ";
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3869 次 |
| 最近记录: |