gpt4 book ai didi

c++ - 计算 vector 子集中的出现次数

转载 作者:行者123 更新时间:2023-11-28 03:15:23 27 4
gpt4 key购买 nike

我将一个字符串标记为一个包含单独元素的 vector 。接下来,我想计算该 vector 子集中某个字符串的出现次数。正如 guide 所提到的,当我想简单地使用整个 vector 时,这就起作用了。 :

cout << std::count (tokens.begin(), tokens.end(), 20);

这将统计 20 的所有出现次数。

使用数组可以使用子集(来自指南):

int myints[] = {10,20,30,30,20,10,10,20};   // 8 elements
int mycount = std::count (myints, myints+8, 20);

问题是我想使用 vector 的一个子集,我尝试了几种方法但它们都不起作用:

// Note: Here I count "NaN", which does not change the story.
std::count (tokens.begin(start[i]), tokens.end(end[i]), "NaN")
std::count (tokens.begin() + start[i], tokens.end() + end[i], "NaN")
std::count (tokens + start[i], tokens + end[i], "NaN")

如何计算 vector 子集中出现的次数?

这是一个工作示例的上下文:

#include <iostream>
#include <string>
#include <sstream>
#include <algorithm>
#include <iterator>

int main() {
using namespace std;
string line = "1 1 1 1 1 NaN NaN NaN";
std::vector<int> start = {1,2,3,4};
std::vector<int> end = {1,2,3,4};
istringstream iss(line);
vector<string> tokens;
copy(istream_iterator<string>(iss),
istream_iterator<string>(),
back_inserter<vector<string> >(tokens));
for (int i = 0; i < 3; i++)
{
cout<<std::count(tokens.begin() + start[i], tokens.end() + end[i], "NaN");
}
}

Error: Segmentation fault

最佳答案

将整数添加到 vector 迭代器就像将整数添加到指针一样。所以你可以这样做:

cout << std::count (tokens.begin() + 5, tokens.begin() + 10, 20);

计算索引为[5, 10)的标记中有多少个20-s。

关于c++ - 计算 vector 子集中的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17067389/

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