本博客知识记录自己学习中的笔记或者记录,如果有错误欢迎大家纠正。
本节主要大致了解了定义在algorithm中的算法,使用迭代器作为范围。
算法不能改变容器大小,切记
10.1 使用algorithm中定义好的count函数 得到vector容器中的值
代码如下
#include <iostream>
#include <algorithm>
#include <vector>
#include "stdlib.h"
#include <string>
int main()
{
int inputNumber = 0;
std::vector<int> vectorIntA;
while (std::wcin>>inputNumber )
{
vectorIntA.push_back(inputNumber );
}
//如果想要结束循环输入 在win平台应该同时按下 ctrl+z;
std::cout <<std::endl<< "input need count number"<< std::endl;
int countNumberK= 0;
std::cin >> countNumberK;
std::cout <<countNumberK<<" count is = "<<count(vectorIntA.cbegin(), vectorIntA.cend(),countNumberK) << std::endl;
system("pause");
return 0;
}
输出结果为
10.2 读取string序列存入到list中
#include <iostream>
#include <algorithm>
#include <list>
#include "stdlib.h"
#include <string>
int main()
{
std::string s;
std::list<std::string>listString;
unsigned int stringCount = 0;
std::cin>>stringCount;
for (size_t i = 0; i < stringCount; i++)
{
std::cin >> s;
listString.push_back(s);
}
std::cout << std::endl << "input need find string" << std::endl;
std::string findString = "";
std::cin >> findString;
std::cout << findString << " count is = " << count(listString.begin(), listString.end(), findString) << std::endl;
system("pause");
return 0;
}
输出结果为
如果有人细心发现 在上面两个题目中使用了两种迭代器 方式 cbegin 和begin两种 他们的区别在于:
cbegin 相当于 const_iterator 可以用于 const 容器 和 非const容器 不能修改指向元素的值,但可以改变指向的元素。
begin 是能修改稿指向元素的值也可以修改指向的元素。
如果有人知道为什么不能在结束循环输入string之后再继续输入string的问题欢迎留言告知我,谢谢。