posts - 20,  comments - 6,  trackbacks - 0

    
//队列的使用

        #include
<queue>

                
//在BFS中会使用到队列

            
//优先队列
                
        priority_queue
<元素类型> Q;
        Q.push();        
// 压入元素
    Q.pop;        // 弹出
    Q.front();     // 取顶元素
    Q.empty();     // 判断是否为空        

            
        
// 优先队列中默认的是大的先出
        
// 若要使小的先出,则可在元素类型struct中重载 “<”

        
struct node{
            friend 
bool operator < (node n1, node n2)
            {
                
return n1.Step > n2.Step; 
                
// 小的先出
            }
            
int Step;
        };

        
// 优先队列    取顶时应使用  Q.top();




    
//链表的使用

        #include
<list>

        list
<int> lis;
        list
<int>::iterator iter; // 跌代器 (指针)

        list.push_back(); 
// 在链表尾插入元素

        
//操作表中的每个元素时,必须要使用指针
        
//    *iter 即为 iter 所指的元素的值

        
for(iter = lis.begin(); iter != lis.end(); iter ++)
        {    
            iter 
= lis.erase(iter);
            
// 删除表中一位置的元素
            
// 若删除指定位置,第 i 个,可用 i 记数 
        }

        
//    lis.insert() 插入在当前指针所指的元素之前


    
//容器    vector 的使用

        #include
<vector>
        
        vector
<int> v;
        v.push_back();    
// 在尾部插入元素
        v.size();        // 返回容器的大小
        v.clear();        // 清除容器的元素
        v.resize();        //分配表的大小

        
//若使用vector 来表示二维,则可

        vector
<vector<int>  > v(n);
        
//或者
        vector<vector<int> > v;
        v.resize(n);

        
// 可以表示有 n 行的二维数组
        
// 对于每一维 , v[i] 的操作与 v 一致
        

        
        
// 传 vector 的使用
        void pp(vector<vector<int> >  &vv)
        {
            
// 传vector 的函数使用

            
int i ,j;
            
for(i = 0 ; i < vv.size(); i ++)
            {
                
for(j = 0 ; j < vv[i].size(); j ++)
                    printf(
"%d ",vv[i][j]);
                printf(
"\n");
            }
        }

        
void main()
        {
            
int i,j;

            vector
<vector<int > > a(10);

            
for(i = 0 ; i < 10 ; i++)
                
for(j  = 0 ; j < i;j ++)
                    a[i].push_back(j);
            
            pp(a);
            
            
// 调用函数
        }






    
// C++ 自带的排序 sort

        #include
<algorithm>
            
//头文件

        
bool cmp(int a, int b){
            
return a > b;
        }    
// 使得降序排列

        
//默认为升序    sort(a,a + n);

        sort(A, A
+n,cmp);

        
//也可对结构体排序,比较函数自己实现


    
// 要对容器中的元素排序

        
// 可使用跌代器
        
// 把容器中起始与结束的指针传给 sort

    
// example

        vector
<int> v;
        vector
<int> ::iterator it1;
        vector
<int> ::iterator it2;

        it1 
= v.begin();
        it2 
= v.end();

        sort(it1, it2 ,cmp);



    
// string

        
// 使用起来相对比较多 , 主要在处理字符串的时候
        
        #include
<string>
        
         
string  s1 , s2 , s3;
        
        
// string 类的赋值
        
// 即可以 相互之间,也可以把字符串直接赋给 string 类
    
// example
        
         
char ss[] = “abcd”;
        s1 
= “”;         // string 类初始为空
    s1 = ss ;        //    把字符串直接赋给string
    s2 = s1;        // sgring 之间赋值
    
    
// string 类可以直接使用 + 来进行字符串的拼接
    
         s1 
= “ab”;
         s2 
= “cd”;
        s3 
= s1 + s2;
        
//    操作的结果 s3 == “abcd”;
    
// 常用的函数     
    s1.size();     // 字符串的大小,既长度
    
// 对于已经赋值的字符串,可以直接对下表进行操作
    
// 可以使用查找函数
    s1.find(s2) ;     // 在s1 中查找 s2 ,如果存在,返回起始下表,否则返回 -1
    s1.substr(起始位置,长度); //取子串
    

posted on 2009-02-10 18:42 混沌的云 阅读(521) 评论(2)  编辑 收藏 引用

FeedBack:
# re: STL简单讲解
2009-02-18 21:49 | shǎ崽
zero  回复  更多评论
  
# re: STL简单讲解
2009-02-18 21:54 | 混沌的云
@shǎ崽
囧。。。  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

常用链接

留言簿(1)

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜