c++ - 将 vector 元素制作成字符串进行比较?

标签 c++ vector

我对 C++ 中的 vector 感到困惑;这是我第一次使用它们。我制作了一个字符串 vector ,我正在尝试将该 vector 中的元素与一个字母进行比较。

#include <iostream>
#include <string>
#include <vector>
using namespace std;

/* Head ends here */
void displayPathtoPrincess(int n, vector <string> grid){
    for(vector<string>::iterator it = grid.begin(); it != grid.end(); ++it) {
        if(*it.strcompare('p') != 0)
            cout << 'Princess found!';
    }
}

/* Tail starts here */
int main() {

    int m;
    vector <string> grid;

    cin >> m;

    for(int i=0; i<m; i++) {
        string s; cin >> s;
        grid.push_back(s);
    }

    displayPathtoPrincess(m,grid);

    return 0;
}

为什么这行不通?不会*它总是一个字符串类型吗?

这是我的错误:

error: 'std::vector >::iterator' has no member named 'strcompare' 

最佳答案

首先,在这种情况下,.* 绑定(bind)得更紧,所以这

*it.strcompare('p')

相当于

*(it.strcompare('p'))

所以你应该这样调用

it->methodName(args)

其次,你需要调用std::string的方法,大概是 std::string::compare .

请注意,如果您只想搜索等于"p" 的条目,那么您所要做的就是

auto it = std::find(grid.begin(), grid.end(), "p");
if (it != v.end()) std::cout << "Princess found!" << std::endl;

关于c++ - 将 vector 元素制作成字符串进行比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972631/

相关文章:

c++ - Linux 中的线程/套接字限制

c++ - gdi+ GetWorldTransform() 它在 directx 中的什么位置?

algorithm - 搜索最近的 k 个元素

java - ArrayList、LinkedList 和 Vector 哪一个最适合从列表中添加或删除元素

尝试从 vector 中删除时,C++ 访问冲突读取位置 0x003AE000

c++ - 正确编写 for 循环、正态循环和反向循环、C++ 基础知识

c++ - 错误 MSB6006 : "CL.exe" exited with code 1 after adding template function or class

r - 按组在 data.table 中创建新列

c++ - 我不明白为什么这段代码无法打开文件

c++ - 来自 vector 的值与原始值不同