数学建模社区-数学中国

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

作者: 结局我一人    时间: 2015-4-14 10:06
标题: vector调用push_back为什么会失败?初始化了也不行
头文件handle.h
$ @7 x$ o5 ^. j6 `2 F# {" e#ifndef _HANDLE_H
. ?# U9 g9 ], R( D8 x#define _HANDLE_H- M9 }7 t' A/ y3 D2 k, s4 y4 j3 [

$ {: }! Q. q& o3 a- ~- U/ u5 Wclass Handle{
9 R# x5 ^1 `- E+ Y5 p+ |% ]# N    struct StackOfInt;
9 C  r# D, U! ~, l: b    StackOfInt* smile;. ~# W  S" z" W/ D  n8 ^5 w
public:
7 h$ G7 K: m! W4 C9 u6 ], i    void initialize();
( F* m2 O/ ~2 o; V, c* f# p    void cleanup();
# W4 v  ]( H7 _$ {' [* o* ~. }    void push(int elem);
, [8 |1 P3 h$ W# Y    int fetch();
  [7 v6 S7 S( m$ P9 i6 \    int pop();0 s0 E& n" I7 ?( S8 |5 ?
    int count();
9 z9 s. D% i$ R7 A( I- O};
0 b. U( H$ H/ s# M! T6 C' k  Z, Q$ H) o9 n8 \
#endif//_HANDLE_H4 E& ?5 G# G1 N7 o8 k% g

& U6 v5 ^7 J; Z# E& _6 ~. y6 C类class的函数定义
* f5 n& h& {$ P4 G0 L+ B#include<iostream>
1 |& r) G/ N% ]#include<vector>
0 A4 m! z% {/ r1 K7 N  _#include "handle.h"+ d  a7 D* x) H
using namespace std;
& P/ \  o  Y7 g
" ]: Q+ R. J  g+ ustruct Handle::StackOfInt{7 t& g3 H) n# o1 t, {/ V7 ]
    vector<int> top;
0 Q: f. c; ?( z9 [, m& }! Z: E};, x' D$ A3 C' j: \8 |) @
4 ?' j) V& R) [7 q
void Handle::initialize()
. ?$ Q. o( e# L# V7 E{
6 z* C1 H6 i. B  K0 ?; s# l3 a    StackOfInt* smile = new StackOfInt;, y" R( e2 u9 w- ]0 d" M
    smile->top.reserve(100);
2 x! b/ Z& }, Q" ?9 }4 j    cout << smile->top.capacity() << endl;# B. u. f7 H6 @$ i
}4 p" Y8 J1 |( L: ~" ^! G8 T' _; [1 n
  O! f0 h' @9 u
void Handle::cleanup()
$ r  H0 y0 U, p5 B6 m{. P9 Z$ m( _8 x+ ^* g  V  n8 Z
    delete smile;  q! l+ a3 K: t
}( L& b/ n$ q2 }+ m
% U+ E6 b2 K8 a
void Handle::push(int elem)! {& |; U% H* k9 b0 l
{
- I) R0 r0 h  q% \; q! Z+ O    cout << "before push\n";' `8 `/ n. {% o# q8 ~
    smile->top.push_back(elem);3 V) y% m5 H. x
    cout << "after push\n";
8 k" i, H: h+ U6 r  b9 s}
# V# |8 Z0 o+ U1 K1 s; r+ rint Handle::fetch()' K6 s+ V! I0 [% Z( V8 R
{
9 W; I" }! R8 K- I8 A2 y    return smile->top.back();5 W# Q# m: K# ]: k
}
, `9 s1 X# v& v' @# I( j' ]int Handle::pop(); q9 i! g" \3 d9 H
{
/ T' u) i: r4 D: \0 g" S6 D    int n = smile->top.back();6 ?" |# O- n, K* q" ^
    smile->top.pop_back();0 G. S! c5 E! s( J) d0 [
    return n;
( V: c# G7 Z! E' |8 l$ @' j& \}
7 d) R, _  a# p  E  \# kint Handle::count()* g0 F' W$ \2 f: V# e
{' N* V0 C$ ], L) k& h
    return smile->top.size();
5 D  Q5 k9 B9 q) p; d' G}
- H  J/ g4 h% t( f, q+ y7 _" V
( X* E1 d+ p5 M! {9 r- s7 V主函数 main.cpp% |) o& K" q% M. O  ~( g- W
#include<iostream>
: q6 w/ f  B8 w/ R" U, k( M#include "handle.h"8 c) I" a( K, [6 Q  [9 p
using namespace std;
; `* e5 ^4 \5 H0 H$ g2 R
) V3 B* l1 k2 P3 G8 Fint main()+ P! D3 Q7 g* h& @6 L# z- m
{
% I1 k( J" v% G. |+ p1 O( W. t4 }' a    Handle h;7 O5 q" X" R1 G* B& H$ @
    h.initialize();
! m1 w3 q( }5 B( J9 D9 r1 z3 p    for (int i = 0; i < 10; i++)9 v) u- k* |- L0 o# Y
    {" \6 \. a7 F% n" E0 C9 c) x0 ]
        h.push(i);
2 ]) c6 n0 s0 ^# V: B$ @. d. q        cout << "last element is " << h.fetch() << endl;  W# `2 e3 s: V9 o' N. H
    }7 r% q( \! m' R3 {  j! H7 T& ~
    for (int i = 0; i < 10; i++)2 K: z$ A% ?' |0 m; W4 ~4 G
    {
! v4 r4 F4 ?: Y) b% a! I& A        h.pop();
. \/ D, B% k; I0 L' G+ g0 x# [& u    }; }& C0 {2 H/ S- _0 w% D3 j

, a# P3 W% s, I: I7 E6 H& N& ?8 g    return 0;- J  l. d$ d: U/ [+ ?5 p! a* Q8 i
}
: X. U& Y- D! |$ T) s7 I4 O5 s
2 c" t4 L* o! |+ p. C. e5 A5 @" r( e" T8 f

4 T* ?+ ^0 J7 f" T" W
作者: 超级管理员    时间: 2015-4-14 21:29
是代码里缺东西了吗?! F) ^6 E2 Z7 @/ E$ E* V
) u( k3 e0 R, P. O2 B





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