`
rcfalcon
  • 浏览: 227999 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++子结构间接自杀实验

阅读更多

之前在写一个TCP/UDP通信程序的时候,

我想试验这样一个结构:


子结构通过父结构的的STL函数间接自杀。。

结果当时得出了一个结论,是可行的。

后来又在其他平台上报错,总之各种危险,以后还是不要写这种跟编译器、平台相关的危险代码。


后来的经验是,对于STL里的类实例(或者大STRUCT)最好都用指针统一管理。具体管理方法我将会另外写篇经验心得。


附上代码:

 

//为了试验在子结构中能否通过调用父结构的STL函数删除自身
//结论:能!

//补充,某些时候不能……找不到原因,该方法最好不要使用


#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class Son;

bool KillId( Son const& instance );
int idtokill;

class Father
{
public:
	vector<Son> sons;

	void Kill( int id )
	{
		idtokill = id;
		sons.erase( remove_if(sons.begin(),sons.end(),KillId), sons.end());
	}
};

class Son
{
public:
	Son( Father* f, int id )
	{
		p_Father = f;
		m_id = id;
	}

	~Son()
	{
		//cout<<m_id<<"has been killed"<<endl;
	}

	void Kill()
	{
		p_Father->Kill( m_id );
	}

	Father* p_Father;
	int m_id;
};

bool KillId( Son const& instance )
{
	return instance.m_id == idtokill;
}

void main()
{
	Father f;
	Son s( &f, f.sons.size() );
	f.sons.push_back( s );

	Son s2( &f, f.sons.size() );
	f.sons.push_back( s2 );

	f.sons[0].Kill();
	cout<<f.sons.size()<<endl;
	f.sons[0].Kill();

	cout<<f.sons.size()<<endl;

	
	system("pause");
}

 

分享到:
评论

相关推荐

    C++数据结构图的遍历实验

    在这个名为“C++数据结构图的遍历实验”的实践中,我们将深入探讨如何使用C++编程语言来处理和遍历图这种特定的数据结构。这个实验的目的是帮助学习者加深对图遍历算法的理解,从而提高其编程技能。 图是由顶点(或...

    c++数据结构算法实验

    在"C++数据结构算法实验"中,我们将深入探讨这两个主题,通过实践来提升理解和应用能力。 一、数据结构 1. 数组:最基础的数据结构,可以看作是相同类型元素的集合。在C++中,我们使用数组来存储一系列按顺序排列...

    C++数据结构与算法实验报告及代码

    这份"C++数据结构与算法实验报告"涵盖了以下几个关键知识点: 1. **基础数据结构**:C++提供了多种基本数据结构,如数组、链表、栈、队列、集合、映射等。数组是最基础的数据结构,它允许我们存储和访问固定大小的...

    c++数据结构-实验.zip

    c++数据结构--实验 线性表的基本操作 1.实验内容与要求 1)理解线性表的概念 2)设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造、查找、插入、删除、输出等基本操作。 3)掌握两种存储...

    c++语言描述 数据结构c++语言描述 实验代码 任燕版

    在"数据结构C++语言描述 任燕版"这个主题中,我们聚焦于使用C++实现数据结构的实验代码,特别是关于顺序表的操作。 顺序表是一种简单但重要的线性数据结构,它的所有元素在内存中是连续存放的。在C++中,通常使用...

    数据结构实验 C++

    在这个“数据结构实验 C++”中,我们将深入探讨如何利用C++来构建和操作各种数据结构。 1. **数组**:数组是最基本的数据结构,它允许存储相同类型的数据元素集合。在C++中,你可以直接定义一维或多维数组。实验...

    数据结构实验迷宫实现(C++代码)

    "数据结构实验迷宫实现(C++代码)"这个标题暗示了我们将深入到数据结构和算法的世界,特别是与图和搜索策略相关的知识。迷宫问题通常涉及在二维网格中找到从起点到终点的有效路径,而C++作为一种强大的编程语言,...

    C++数据结构与算法 (第4版)

    根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...

    C++数据结构实验

    在这个"C++数据结构实验"中,我们将专注于栈(Stack)、队列(Queue)以及二叉树(Binary Tree)这三种基础但至关重要的数据结构。下面将详细阐述这些知识点。 **1. 栈(Stack)** 栈是一种线性数据结构,遵循...

    数据结构(c++版)实验书

    《数据结构(C++版)实验书》是针对计算机及相关专业学生的重要教材,由王红梅、胡明、王涛等人主编,清华大学出版。这本书旨在教授数据结构的基础知识,特别是线性结构、树结构和图结构的逻辑存储实现以及相关的...

    C++数据结构等价类实现

    在这个C++数据结构实验作业中,我们将探讨如何在C++中实现等价类,同时利用C语言的数据结构。 等价类的概念源于集合论,指的是在某个特定的条件下,所有元素都可以相互替代的一组元素。在数据结构中,这通常表现为...

    最小生成树 c++ 数据结构

    最小生成树…… c++ …… 数据结构……

    数据结构(C++版)(第3版)-习题解答与实验指导

    《数据结构(C++版)(第3版)-习题解答与实验指导》是针对学习数据结构的C++编程者的一本重要参考资料。这本书详细解答了数据结构课程中的各类习题,并提供了实用的实验指导,帮助读者深入理解和掌握数据结构的概念...

    C++课程设计实验报告——学生管理系统

    实验内容涵盖了C++的基础语法和高级特性,如顺序结构、分支结构、循环结构、函数、结构体、指针以及文件操作。此外,还需要运用数据结构中的动态链表,实现插入、删除节点、数据录入和条件检索等功能。 实验方案...

    数据结构C++实验报告拉链法哈希表查找算法合工大

    合工大数据结构C++实验报告拉链法哈希表查找算法

    各种C++数据结构的实验代码

    本压缩包“各种C++数据结构的实验代码”提供了丰富的源码示例,涵盖了诸如单链表、树以及图等经典数据结构的实现。这些代码可以帮助学习者深入理解数据结构的原理,并通过实践提升编程技能。 1. **单链表**:单链表...

    C++数据结构:查找、排序及其应用

    《C++数据结构:查找、排序及其应用》的实验报告主要涵盖了数据结构中两个核心概念:查找和排序,以及它们在实际应用中的实现。实验旨在加深学生对这些基础算法的理解,提升他们的数据处理和综合应用能力。 查找是...

    c++实验答案

    实验一通常会涉及C++的基础语法,包括变量声明、数据类型、运算符、控制结构(如if语句、for循环、while循环)以及函数的使用。理解这些基本元素是编写任何程序的基础。 实验二可能涵盖了C++的函数和数组。函数是...

Global site tag (gtag.js) - Google Analytics