数学建模社区-数学中国
标题:
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 y
class 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 y
struct 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& U
void 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% A
void 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# s
void 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' a
int 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 e
int 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