C++中字符数组和字符串string(2)

(2)一个简单的例子

从txt中读入以空格为单位的字符串,并对其进行去重排序输出

#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
 ifstream in("E:\\algorithmZack\\testString\\name.txt");  // fstream
 string str;         
 vector<string> vec;    //vector
 while(getline(in, str))      // string
 {
  while(str.find_first_of(' ') != -1)
  {
   vec.push_back(str.substr(0, str.find_first_of(' ')));
   str = str.substr(str.find_first_of(' ')+1);
  }
  vec.push_back(str);
 }
 sort(vec.begin(), vec.end());          // algorithm
 /*注意这里去掉了重复元素 但vec大小没变,在其后面添加了两个空格。但是对于int,则将重复的元素放在后面 */
 vector<string>::iterator it = unique(vec.begin(), vec.end());  // algorithm  返回去重后最后一个元素
 copy(vec.begin(), it, ostream_iterator<string>(cout, "\n"));    // iterator  ostream_iterator<string>  iterator
 cout << endl;
 copy(vec.begin(), vec.end(), ostream_iterator<string>(cout, "\n"));
 /*for(vector<string>::iterator iter = vec.begin(); iter != vec.end(); iter++)
 {
  cout << *iter << " ";
 }
 cout << endl;*/
 return 0;
}

C++中字符数组和字符串string

C++中字符数组和字符串string

注意:这里的unique去掉了vector<string>中重复元素,但其大小没有变,重复的元素用空格代替放在其后面。但是对已vector<int>,则将重复的元素放在后面。

(3)copy函数

Copy函数包含在头文件#include<iterator>头文件中。主要有三个常用的用法

copy(IteratorInput it1, IteratorInput it2, IteratorOnputit3)  // algorithm

1: 用数组对vector<T>进行赋值

2:用cin对vector<T>进行赋值

3:将vector<T> 进行输出

copy函数原型解释见:

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <string>
using namespace std;


int main()
{
 vector<int> vec;
 cout << "hello world!!" << endl;
 //int a[] = {3,2,1,1,2,3};
 //copy(a, a+6, back_inserter(vec));
 //vec.resize(6);
// copy(a, a+6, vec.begin());
 copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(vec));
 copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
 cout << endl;
 sort(vec.begin(), vec.end());
 vector<int>::iterator it = unique(vec.begin(), vec.end());
 copy(vec.begin(), it, ostream_iterator<int>(cout, " "));  // 输出
 return 0;
}

C++中字符数组和字符串string

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/06f8e9032b0a786a5141bfc636f31c0c.html