在此代码中如何获得子字符串计数
How in this code getting the count of substring?
i正在研究C 代码,该代码计算出大小2的连续substr,链接是代码
,但我对这条线有所怀疑,
for (int i=0; i<str.size()-1; i++)
dPairs[make_pair(str[i], str[i+1])]++;
这里的dpairs是一张地图,如下,
map<pair<char,char>, int> dPairs;
" dpair [make_pair(str [i],str [i 1])] 的目的是什么。
dPairs[make_pair(str[i], str[i+1])]++;
对于MAP dPairs
中的密钥pair(str[i],str[i+1])
,该语句将值递增为1。
例如,如果字符串为 aabaa
,则因为它循环,dpairs [pair&lt;'a','a'>]将增加两次,从而总计aa
作为2。
++
在那里增加了子字符串的计数。map
保留了[]
访问的唯一键,因此,如果不存在键,则将其添加,如果它确实存在,则它已检索。
因此,假设我们的字符串str
是"aaa"
。首先,我们将a, a
添加到地图中,++
将其值设置为1
(因为它将默认初始化为0
)。然后,当我们添加下一个值时,首先检索了上一个a, a
,并带有1
的值,其值将增加到2。
#include <iostream>
#include <string>
#include <map>
int main()
{
std::string str { "aaab" };
std::map<std::pair<char, char>, size_t> pairs;
for (size_t i = 0; i < str.size() - 1; i++)
{
pairs[std::make_pair(str[i], str[i+1])]++;
}
for (auto pair : pairs)
{
std::cout << pair.first.first << ", " << pair.first.second << ": " << pair.second << "n";
}
}
str
有4个字符,因此循环的3个迭代:
a, a = 1
a, a = 2
a, b = 1
相关文章:
- 未获得字符串中的预期输出
- C++:从文件中读取字符串和整数,并获得最大数字
- 获得'\n'来自字符串
- 提升,从字符串问题中获得时间
- 为什么当我在MD5 Hash中转换相同的C 字符串时,每次都会获得不同的输出
- 如何获得字符串的特定实例,该实例在字符串中多次重复
- 我如何在QT中获得字符串的一部分
- 如何从字符串获得浮点值
- 试图将字符串变为char数组,请帮助我仅在数组中获得所需的字符
- 如何在C 中获得字符串的最后一个字符
- 如何获得Qopenglcontext(例如Qopenglcontext)的普通QT5类型的字符串表示
- 在QStringList内部查看重复的字符串并获得重复的数量
- 解析字符串以获得int
- 如何在c++中从字符串中获得子字符串到第一个换行字符
- 如何在QT c++中使用正则表达式从字符串中获得子字符串值
- c++在文件中匹配字符串并获得行号
- 试图反转字符串并获得总线错误
- 如何在字符串中获得boost::regex模式的所有发现的位置
- 如何在std::字符串中获得正确的位置
- 需要解析整型字符串并获得空白