vector
vector实现的是数组的功能
1、向vector内部的数组中出入数据时,使用push_back和pop_back
①定义了vector,则在子函数中采用push_back和pop_back实现字符串的存储
②使用while(1)循环,里面一定要有结束while循环的语句。
③find函数没有找到内容时,返回-1,当只剩最后一个名字,利用find函数不能找出‘,’,所以返回-1,此时直接输出剩余的字符串即可,通过break跳出循环
#include <stdio.h>
#include <string>
#include <vector>
using namespace std;
void split(const string& str, vector<string>& parts)
{
int start = 0;
while(1)
{
int end = str.find(',' , start);
if( end < 0)
{
parts.push_back(str.substr(start));
break;
}
else
{
parts.push_back(str.substr(start, end-start));
start = end + 1;
}
}
}
int main()
{
vector<string> parts;
split("Fa,Xia,AnXin", parts);
for(int i=0; i<parts.size(); i++)
{
string& str = parts[i];
printf("%s \n", str.c_str());
}
return 0;
}
list
1、链表list中删除元素
①用到迭代器
②取出迭代器中的元素,int& a=*iter
③是偶数就调用erase,否则直接执行iter++操作
#include <stdio.h>
#include <list>
using namespace std;
// 从数组中删除偶数值
void removeEvens(list<int>& arr)
{
for(list<int>::iterator iter = arr.begin();
iter != arr.end(); )
{
int& e = *iter;
if(e % 2 == 0)
{
iter = arr.erase(iter); // erase的返回值是下一个iter
}
else
{
iter ++;
}
}
}
int main()
{
list<int> arr;
arr.push_back(1);
arr.push_back(2);
arr.push_back(3);
arr.push_back(4);
arr.push_back(5);
removeEvens(arr);
return 0;
}