鱼C论坛

 找回密码
 立即注册
查看: 1410|回复: 3

请问C++里面的 std::string 可否当做类型来定义数组?

[复制链接]
发表于 2014-11-22 15:31:11 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x


  俺写了个小例子 在下面  如果把string当成个类型  比如 后面 注释掉的 Stack<string> B(9) ; 来构造一个堆栈类的数组 array  编译通过但是运行就崩溃了    这是什么原理   请前辈指教   


#include<iostream>

using namespace std ;

template <class T>
class Stack
{
  private:
       int size ;
       int top = 0 ;
       T *array ;
public :
       Stack(int size)
          {
            this->size = size ;
            array = new T[size] ;
          }
       ~Stack() {    delete []array ;    }

       void push(T data) {    array[top++] = data ;   }

       T pop()
          {
              top-- ;
              cout<<" we get "<<array[top]<<endl;  
          }            
};

int main()
{
   Stack<int> A(7) ;
   A.push(22) ;
   A.push(44) ;
   A.push(66) ;


   A.pop() ;
   A.pop() ;
   A.pop() ;  

// Stack<string> B(9) ;
// B.push("string_1") ;
// B.push("string_2") ;
// B.push("string_3") ;

// B.pop();
// B.pop();
// B.pop();

   Stack<char> C(10) ;
   C.push('a') ;
   C.push('b') ;  
   C.push('c') ;

   C.pop() ;
   C.pop() ;
   C.pop() ;
}

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-22 16:17:25 | 显示全部楼层
可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-11-22 17:39:24 | 显示全部楼层


  请教老大   string 可是大小不定的啊 这要在 ansi C 里面可就麻烦了吧     

  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-11-22 18:40:29 | 显示全部楼层
#include<iostream>
#include <string>
using namespace std ;

template <class T> 
class Stack
{
   private:
           int size ;
           //int top = 0 ;
           int top;
           T *array ;
   public :
           //Stack(int size)
           Stack(int size):top(0)
           {
                   this->size = size ;
                   array = new T[size] ; 
           }
           ~Stack() {    delete []array ;    }
           
       void push(T data) {    array[top++] = data ;   } 
           
       T pop() 
           {
                   top-- ;
                   cout<<" we get "<<array[top]<<endl;  
                   return array[top];
           }            
}; 

int main()
{
    Stack<int> A(7) ;
    A.push(22) ;
    A.push(44) ;
    A.push(66) ;
        
        
        A.pop() ;
    A.pop() ;
    A.pop() ;  
        
        Stack<string> B(9) ;
        B.push("string_1") ;
        B.push("string_2") ;
        B.push("string_3") ; 
        
        B.pop();
        B.pop();
        B.pop(); 
        
        Stack<char> C(10) ;
    C.push('a') ;
    C.push('b') ;  
    C.push('c') ;
        
        C.pop() ;
    C.pop() ;
    C.pop() ;
} 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表