gpt4 book ai didi

c++ - 比较 2 个不同大小的 vector C++

转载 作者:行者123 更新时间:2023-11-28 04:43:55 42 4
gpt4 key购买 nike

基本上,我有一个字符 vector 和一个线 vector ,我想将字符与线进行比较,看看 vector 中的每个字符是否都能在线 vector 中找到匹配项。例如,它打印位置。如果行 vector 是 ABCDEF,HIJKL 并且字符 vector 是 C,E,F,C 程序打印 0,2 0,4 0,5 0,2

我自己尝试过这样做,但遇到了 2 个问题,一个。字符的 vector 被乱序打印,然后是两个。如果字符 vector 中有一个元素出现了两次,那么它只打印一次位置。

https://i.imgur.com/6Eu49IH.png

这就是输出消息文件是 THIS IS A TEST MESSAGE,这是放入字符 vector 的文件。

这本书的文件是

ABCDE FG

HIJKLMNO

PQRSTUVWXYZ

并且每一行都被放入行的 vector 中

int main(int argc, char *argv[])
string str;
vector <string> bookVector;
vector <char> messageVector;
char c;
ifstream message(argv[2]);
ifstream book(argv[1]);
ofstream outputFile(argv[3], ios::in | ios::binary);

while (getline(book, str))
{
bookVector.push_back(str);
}

while (message.get(c))
{
messageVector.push_back(c);
}

for (int i = 0; i < bookVector.size(); i++)
for (int x = 0; x < bookVector[i].size(); x++)
if (find(messageVector.begin(), messageVector.end(),
bookVector[i][x]) != messageVector.end()) {
cout << "found a match at " << bookVector[i][x] <<
" at positions "<<i<<","<<x<< endl;
}
}

最佳答案

你可以这样做:

#include<iostream>
#include<string>
#include <vector>

int main()
{
std::vector<std::string> book = { {"ABC"},{"DEF"},{"GHI"}, {"BFG"}, {"HELLO"} };
std::vector<char> chars = { 'B', 'G', 'H' };

for (int j = 0; j < chars.size(); j++)
{
for (int i = 0; i < book.size(); i++)
{
size_t offset = 0;
while ((offset = book[i].find(chars[j], offset)) != std::string::npos)
{
std::cout << "Found " << chars[j] << " at " << i << "," << offset << std::endl;
++offset;
}
}
}
std::cin.get();
return 0;
}

上述示例生成的输出:

Found B at 0,1
Found B at 3,0
Found G at 2,0
Found G at 3,2
Found H at 2,1
Found H at 4,0

关于c++ - 比较 2 个不同大小的 vector C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49677462/

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