数学建模社区-数学中国

标题: vector调用push_back为什么会失败?初始化了也不行 [打印本页]

作者: 结局我一人    时间: 2015-4-14 10:06
标题: vector调用push_back为什么会失败?初始化了也不行
头文件handle.h( d3 Z: s# c; M) }: p
#ifndef _HANDLE_H* |! I& v7 C* y5 B3 z7 r# _0 q( P% Z
#define _HANDLE_H- s) O: _0 d: l. m

& l7 j" ^8 e2 m) E2 l$ U7 yclass Handle{1 Y$ H! {/ m, ~: y
    struct StackOfInt;8 R: |; G6 b$ D0 I# I; H
    StackOfInt* smile;: T6 g( Z* T/ S& z- X
public:+ I! |; B2 Y% h# R( W( j; l: n
    void initialize();3 M- z& {' e% n6 R
    void cleanup();) y6 I$ D9 E8 v" f) M
    void push(int elem);
6 s4 |* w" R8 t$ l$ [2 E0 A    int fetch();7 M7 N( |# ]0 o7 g+ E
    int pop();& k# Q2 W1 L& T1 J6 K
    int count();0 y) [: m/ R8 h/ [1 a
};
9 y$ b9 c7 X( d& j) R
0 n3 H; {; R- |6 K#endif//_HANDLE_H
% @, W) S! h* |& b2 W' G& K) r1 _( {( s" ?% l
类class的函数定义
6 A- S* O5 y+ V  v; e#include<iostream>
6 s$ f" O2 y- _#include<vector>; O, v$ K! M$ j
#include "handle.h"5 o- L) K& I, c- E. B' r: N$ A  O
using namespace std;
8 L+ p4 n7 O9 P$ q7 H
2 g4 N* @& g. [/ K5 ystruct Handle::StackOfInt{5 w. O( H0 g( x* M
    vector<int> top;
. ^) R; z. h' M$ `};4 E9 e, F: G! Q( o; s; a. ^

! V5 f& s- p+ U. p& Uvoid Handle::initialize()
; a. \( O# L$ u- V1 |$ {{
; X$ T$ D9 K1 _7 n    StackOfInt* smile = new StackOfInt;
1 |* C* ]& Y! z# k) j7 t    smile->top.reserve(100);) M) s) n1 A- Y  X; H' z( n
    cout << smile->top.capacity() << endl;" ~; k3 }8 E) V3 k. P( w
}
* c* x" ~6 Q2 y7 V2 S; R9 O
5 Z' p$ C* @# O& |1 N6 o% Avoid Handle::cleanup()* l8 l/ r1 f# u+ L1 E
{
8 u* \& E2 J' m, e+ |    delete smile;1 e, t6 q3 q, A/ F$ m+ T8 I
}' h. w0 `% X- q0 v4 c! s& o& e

4 s4 B* r; }& @. G# svoid Handle::push(int elem)0 D2 {- I+ V! |$ b
{
) {/ q# H/ r: N! ]' y    cout << "before push\n";5 T' k: I$ ^& @* O: ?
    smile->top.push_back(elem);
6 n5 t( U. T& ^. q    cout << "after push\n";) V; o: }7 R4 p! {; }! P( @
}
- J# l4 n$ `5 K8 ~1 x) i' aint Handle::fetch(). B. `! h3 V' V2 q! L/ x2 b" t
{
: L) \6 c' c/ [! v' d/ w9 |9 E    return smile->top.back();( T8 K. K' z8 U; U+ e2 d  O
}
* j: s7 w$ d# i; K2 eint Handle::pop()
- ~& s4 `6 m% g{
& D. o4 I4 l$ L+ h    int n = smile->top.back();
2 T, ~5 v. W# x6 H6 e( `5 d  E% b    smile->top.pop_back();
1 U/ S$ Q6 _( v9 C    return n;
5 z% u1 d+ a, ^}; G. P9 ?/ v* M$ Z; A
int Handle::count()# @% |7 E* {# z  l  _. w6 ^& N  ?
{. Q( D; ~' R8 e2 C0 |, \$ \
    return smile->top.size();3 g% u- h* z  m$ Z7 ?3 \  V5 p
}
4 ~0 [3 ?. n0 {: m5 B; [
6 b/ [4 V: h, }, R( J% O( {9 y2 W主函数 main.cpp
9 K- `* [% }- T! k9 b#include<iostream>: V9 {0 J5 O2 v# Q2 ]: ~3 o  q$ O6 ~
#include "handle.h"
  A. T* u# N; L% s9 [using namespace std;) C: _5 h. U& K2 k/ n$ H- F
! T2 F+ P$ F. O; Z
int main()! L5 `1 F' d2 B! Y6 K
{
3 o% s# p/ V+ H    Handle h;
* B# u- r" _* s8 e    h.initialize();
. b, L, d6 B' f! u5 ^    for (int i = 0; i < 10; i++)
! @  K$ O) V- b2 |8 A* m; l' }7 M7 \    {
* e# t+ v9 t% f' ?  M5 ~* y        h.push(i);
+ S; k% F$ l: q, H        cout << "last element is " << h.fetch() << endl;1 H  L# ^3 i, I/ Y; w( i. A5 a
    }
0 _& J+ \( p" K1 [    for (int i = 0; i < 10; i++)
- a" B9 ^  r- i- u$ I    {
, s5 z1 Z7 ]+ `6 g        h.pop();
0 H: `( g+ U( G# I0 B+ C/ B    }/ t7 ^* d; E5 J, h. \+ R: A7 l

7 l& e; M9 W/ k+ X; z9 p; X1 V( v0 H" Q    return 0;- t* @5 V* Y7 X! A" S1 [. b- X& J& ^
}# \4 Z0 D6 G) E/ g% q) _3 m1 |
0 O9 ?$ _! l, S. ]0 d: e

8 y4 ?$ o# V  A
0 ?3 G5 Y6 v' A& m9 \
作者: 超级管理员    时间: 2015-4-14 21:29
是代码里缺东西了吗?
3 ?( k- q3 X5 g4 x% p2 C; K7 h, i% w0 |1 {





欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5