C++ STL的使用(vector)

STL作为一种动态数组,常用的函数类成员函数如下:


clear()    移除vector中所有数据,容器大小设置为0

empty()    vector是否为空,为空则返回true

size()     返回vector中元素的个数

begin()        返回vector中第一个元素的迭代器

end()          返回vector中最后一个元素的下一个

erase()       删除某个位置的数据,并将指针指向下一个位置

pushBack() 在vector的尾部增加一个元素


案例一:




(1)系统初始化,输入该树。

(2)判断某个节点否存在。

(3)删除某个节点。


#include <vector>
#include <iostream>
using namespace std;
#define MAX_NAME_LENGTH   (10)
#define MAX_NODE_NUM      (7)


#define STR_NODE1   "node1"
#define STR_BLOCK1  "block1"
#define STR_BLOCK2  "block2"
#define STR_DATA1   "data1"
#define STR_DATA2   "data2"
#define STR_DATA3   "data3"
#define STR_DATA4   "data4"


typedef struct tagBiTree
{
int nodeId;
char nodeName[MAX_NAME_LENGTH];
}BiTree;


char *nodeName[] = {STR_NODE1, STR_BLOCK1, STR_BLOCK2, STR_DATA1, STR_DATA2, STR_DATA3, STR_DATA4};


vector<BiTree> g_bitree;
vector<BiTree>::iterator treeIterator;
void initSystem()
{
int   index       = 0;
BiTree node       = {0};


for (index = 0; index < MAX_NODE_NUM; index++)
{
strncpy_s(node.nodeName, nodeName[index], strlen(nodeName[index]));
node.nodeId = index;


g_bitree.push_back(node);
}

return;
}

/*最后一个元素用换行,其他使用空格*/
void outputTree()
{
for (treeIterator = g_bitree.begin(); treeIterator != g_bitree.end(); treeIterator++)
{
if (treeIterator != g_bitree.end() - 1)
{
cout<<treeIterator->nodeName<<" ";

else
{
cout<<treeIterator->nodeName<<endl;
}
}

return;
}

/*删除同时要进行查找,如果找到,则可以删除,未能查找到,打印返回*/
void delNode(char* name)
{
for (treeIterator = g_bitree.begin(); treeIterator != g_bitree.end();)
{
if (0 == strcmp(treeIterator->nodeName,name))
{
break;

else
{
treeIterator++;
}
}


if (treeIterator == g_bitree.end())
{
cout<<"node:"<<name<<" does not exist"<<endl;
return;
}

treeIterator = g_bitree.erase(treeIterator);

return;
}


int main()
{
int  index    = 0;
int  delCount = 0;
char delNodeName[MAX_NAME_LENGTH];


initSystem();
scanf_s("%d",&delCount);


while(index < delCount)
{
scanf_s("%s", delNodeName, sizeof(delNodeName));
delNode(delNodeName);
index++;
}


outputTree();
return 0;
};










猜你喜欢

转载自blog.csdn.net/zhaoyaxiong_ctu/article/details/69938693