是 std::include 中的错误还是我做错了什么
Is it bug in std::includes or am I doing something wrong
C++ STL includes
(http://www.cplusplus.com/reference/algorithm/includes/( 测试排序区域是否包含另一个排序区域如果排序区域 [first1,last1( 包含排序区域 [first2,last2] 中的所有元素,则返回 true。
void Test_STL_Includes() {
vector<char>secondRowInKeyboard{ 'a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L' };
sort(secondRowInKeyboard.begin(), secondRowInKeyboard.end());
string s("Alaska");
sort(s.begin(), s.end());
if (includes(secondRowInKeyboard.begin(), secondRowInKeyboard.end(), s.begin(), s.end()))
{
cout << "Matches";
}
else
{
cout << "Not Matches";
}
}
预期:"匹配">
实际:"不匹配">
我是不是搞错了什么?
它不匹配,因为"针"包含两个a
但"大海捞针"只有一个a
。
另请参阅:std::include 实际上做了什么?;另一种声明方式是集合交集必须等于第二个集合。
基于 cplusplus.com 中的这两个指针实现:
template <class InputIterator1, class InputIterator2>
bool includes (InputIterator1 first1, InputIterator1 last1,
InputIterator2 first2, InputIterator2 last2)
{
while (first2!=last2) {
if ( (first1==last1) || (*first2<*first1) ) return false;
if (!(*first1<*first2)) ++first2;
++first1;
}
return true;
}
当匹配一个字符时,将按下第一个指针。因此,您需要两个a
字符,因为Alaska
中有两个。
向量中的额外a
即可获得所需的结果:
vector<char>secondRowInKeyboard{'a','a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L' };
感谢您的回答。它帮助我理解了我的错误。
我通过将阿拉斯加转换为一组来解决这个问题。
void Test_STL_Includes() {
vector<char>secondRowInKeyboard{ 'a','A','s','S','d','D','f','F','g','G','h','H','j','J','k','K','l','L' };
sort(secondRowInKeyboard.begin(), secondRowInKeyboard.end());
string s("Alaska");
set<char> temp(s.begin(), s.end());
if (includes(secondRowInKeyboard.begin(), secondRowInKeyboard.end(), temp.begin(), temp.end()))
{
cout << "Matches";
}
else
{
cout << "Not Matches";
}
}
相关文章:
- #定义c-预处理器常量..我做错了什么
- 努力将整数转换为链表。不知道我在这里做错了什么
- .h 和.cpp文件分离时出错,但仅使用 .h 文件时没有错误.我做错了什么?
- 我的C++线程做错了什么?
- 谁能告诉我我用 getline 做错了什么 (cpp) 格式
- 没有输出的合并排序我做错了什么?
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 在C++中使用 AKS 素数测试计算双胞胎素数 我做错了什么?
- 我一直试图弄清楚我在这个链表程序中做错了什么
- 我正在尝试学习如何在 c++ 中传递指针,但出现错误:没有用于调用"test"的匹配函数。我做错了什么?
- FFMPEG,C++,内存泄漏,我做错了什么?
- 我做错了什么?反向字符串 C++
- 我在这个课上做错了什么?
- 创建整数的 2D 数组,该数组将使用两个函数用随机数填充矩阵.我做错了什么?
- 在不使用内置库函数的情况下添加字符串,我做错了什么?
- 我做错了什么?GetDiskFreeSpaceExA的功能根本不起作用
- 我在查找和字符串上做错了什么?
- 我正在尝试用 c++ 制作一个日志记录框架,但信息没有传递给记录器的子组件,我做错了什么?
- 我在尝试将多个值push_back向量时出错。我做错了什么?
- 插入排序:我做错了什么?