做项目的时候刚开始接触到stl的vector。其中用vector类型管理指针类型的元素。
- #include "stdafx.h"
- #include <stdlib.h>
- #include <stdio.h>
- #include <iostream>
- #include <vector>
- //
- //初始化
- bool init_Vec(std::vector<char *> &vecTest,unsigned int nElem)
- {
- //判断初始时是否为空
- char i=0;
- char* ch="i will be success!";
- if (!vecTest.empty())
- {//初始不为空 清空
- std::vector<char *>::iterator iter=vecTest.begin();
- for (;iter<vecTest.end();iter++)
- {
- char *nc=*iter;
- delete nc;
- }
- vecTest.clear();
- }
- if (0==nElem)
- {
- goto init_Vec_end;
- }
- //初始化
- for (i=0;i<(char)nElem;i++)
- {
- char* pchar=new char;
- //申请成功
- if (pchar)
- {
- pchar=&ch[i];
- vecTest.push_back(pchar);
- }
- else
- {
- delete pchar;
- goto init_Vec_break;
- }
- }
- //正常初始化完成
- return true;
- init_Vec_break:
- //初始化失败 释放已有资源
- {
- std::vector<char *>::iterator iter=vecTest.begin();
- for (;iter<vecTest.end();iter++)
- {
- char *nc=*iter;
- delete nc;
- }
- vecTest.clear();
- }
- init_Vec_end:
- return false;
- }
- //
- //打印
- void Printf_Value(std::vector<char *> vecTest)
- {
- std::vector<char *>::iterator iter=vecTest.begin();
- for(;iter!=vecTest.end();iter++)
- {
- char *nc=*iter;
- printf("%c,%d /n",*nc,*nc);
- }
- }
- //
- //释放资源
- void Clear_vec(std::vector<char *> vecTest)
- {
- if (!vecTest.empty())
- {
- std::vector<char *>::iterator iter=vecTest.begin();
- for (;iter<vecTest.end();iter++)
- {
- char* nc=*iter;
- delete nc;
- }
- vecTest.clear();
- }
- }
- int main(int argc, char* argv[])
- {
- //声明变量
- std::vector<char *> m_vecTest;
- if (!init_Vec(m_vecTest,15))
- {
- printf("{ init_Vec } failed! /n");
- goto End_Main;
- }
- Printf_Value(m_vecTest);
- Clear_vec(m_vecTest);
- End_Main:
- printf("Hello World!/n");
- return 0;
- }
//在 vc 6.0 中编译通过