您的位置:首页 > 编程语言 > Go语言

vector 、map 、iterator 之学习笔记

2012-02-29 18:41 281 查看
由于本人要接手一项C++方面 的工作。由于不会C++,不过做过JAVA 以及一些web方面的开发,加之时间比较短。所以需要速成,于是学习笔记也基本都是用代码代替。

//范例资源文件

/*****************************************************************************************

Test.txt

:

tom 123456789

lilei 234567891

zhangsan 345678912

tom 456789123

xiaohe 567891234                                                                    

******************************************************************************************/

//未用名字空间,使用vector 进行遍历

/******************************************************************************************

#include "stdafx.h"

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

int _tmain(int argc,_TCHAR* argv[])

{

std::string strtmp;

std::ifstream fs("Test.txt");

std::vector<std::string> vect;

while(getline(fs,strtmp,'\n'))

{

vect.push_back(strtmp.substr(0,strtmp.find(" ")));

}

for(std::vector<std::string>::size_type index = 0; index < vect.size();index++)

{

std::cout << vect[index]   << std::endl;

}

return 0;

}

******************************************************************************************/

//使用名字空间,使用vector进行遍历

/******************************************************************************************

#include "stdafx.h"

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

using namespace std;

int _tmain(int argc,_TCHAR* argv[])

{

string strtmp;

ifstream fs("Test.txt");

vector<string> vect;

while(getline(fs,strtmp,'\n'))

{

vect.push_back(strtmp.substr(0,strtmp.find(" ")));

}

for(int index = 0; index < vect.size();index++)

{

cout << vect[index]   << endl;

}

return 0;

}

******************************************************************************************/

//利用迭代器,对vector进行遍历

/******************************************************************************************

#include "stdafx.h"

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

using namespace std;

int _tmain(int argc,_TCHAR* argv[])

{

 string strtmp;

 ifstream fs("Test.txt");

 vector<string> vect;

 while(getline(fs,strtmp,'\n'))

 {

  vect.push_back(strtmp.substr(0,strtmp.find(" ")));

 }

 vector<string>::iterator it = vect.begin();

 for(;it != vect.end();it++)

 {

  cout << *it  << endl;

 }

 return 0;

}

******************************************************************************************/

//使用map 进行遍历

/******************************************************************************************

#include "stdafx.h"

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

#include <map>

using namespace std;

int _tmain(int argc,_TCHAR* argv[])

{

 string strtmp;

 ifstream fs("Test.txt");

 map<string,string>  map_temp;

 string::size_type index = string::npos;

 while(getline(fs,strtmp,'\n'))

 {

 index = strtmp.find("");

 map_temp[strtmp.substr(0,index)] = (strtmp.substr(++index));

 }

 map<string,string> ::iterator it = map_temp.begin();

 for(; it != map_temp.end(); it++)

 {

  cout << it->first << " = " << it->second << endl;

 }

 return 0;

}

******************************************************************************************/

//使用for_each 利用重载操作符 进行map遍历

/******************************************************************************************

#include "stdafx.h"

#include <iostream>

#include <string>

#include <vector>

#include <fstream>

#include <map>

#include <iterator>

#include <algorithm>

using namespace std;

class showIiem

{

public:

void operator()(const map<string,string>::value_type& value)

{

cout << value.first << " = " << value.second << "\n";

};

};

int _tmain(int argc,_TCHAR* argv[])

{

 string strtmp;

 ifstream fs("Test.txt");

 map<string,string>  map_temp;

 string::size_type index = string::npos;

 while(getline(fs,strtmp,'\n'))

 {

  index = strtmp.find("");

  map_temp[strtmp.substr(0,index)] = (strtmp.substr(++index));

 }

 showIiem show;

 for_each(map_temp.begin(),map_temp.end(),show);

 return 0;

}

******************************************************************************************/

// 利用copy,使用重载操作符 进行map遍历

/******************************************************************************************

#include "stdafx.h"

#include <string>

#include <fstream>

#include <iostream>

#include <algorithm>

#include <map>

#include <vector>

using namespace std;

namespace std

{

 std::ostream& operator<<(std::ostream& os, const std::map<std::string,std::string>::value_type& value)

 {

  os << value.first << "= " << value.second;

  return os;

 }

}

class ShowValue

{

public:

 ShowValue(std::ostream& os):m_os(os)

 {

 }

 void operator()(const std::map<std::string,std::string>::value_type& value)

 {

  m_os << value.first << "= " << value.second << "\n";

 }

 std::ostream& m_os;

};

typedef std::ostream_iterator<std::map<std::string,std::string>::value_type> ositertype;

std::ostream& operator<<(std::ostream& os, const std::map<std::string,std::string>& value)

{

 std::for_each(value.begin(), value.end(), ShowValue(os));

 return os;

}

int _tmain(int argc,_TCHAR* argv[])

{

 std::string strtmp;

 std::fstream in("Test.txt");

 std::map<std::string,std::string>  map_1;

 std::string::size_type idx = std::string::npos;

 while(std::getline(in, strtmp, '\n'))

 {

  idx = strtmp.find(' ');

  map_1[strtmp.substr(0, idx)] = strtmp.substr(++idx);

 }

 ositertype os_iter(std::cout, "\n");

 std::copy(map_1.begin(), map_1.end(), os_iter);

 return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息