数学建模社区-数学中国
标题:
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 W
class 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_H
4 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+ u
struct 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+ r
int 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 \# k
int 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 F
int 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. e
5 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