之前在写一个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++数据结构算法实验"中,我们将深入探讨这两个主题,通过实践来提升理解和应用能力。 一、数据结构 1. 数组:最基础的数据结构,可以看作是相同类型元素的集合。在C++中,我们使用数组来存储一系列按顺序排列...
这份"C++数据结构与算法实验报告"涵盖了以下几个关键知识点: 1. **基础数据结构**:C++提供了多种基本数据结构,如数组、链表、栈、队列、集合、映射等。数组是最基础的数据结构,它允许我们存储和访问固定大小的...
c++数据结构--实验 线性表的基本操作 1.实验内容与要求 1)理解线性表的概念 2)设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造、查找、插入、删除、输出等基本操作。 3)掌握两种存储...
在"数据结构C++语言描述 任燕版"这个主题中,我们聚焦于使用C++实现数据结构的实验代码,特别是关于顺序表的操作。 顺序表是一种简单但重要的线性数据结构,它的所有元素在内存中是连续存放的。在C++中,通常使用...
在这个“数据结构实验 C++”中,我们将深入探讨如何利用C++来构建和操作各种数据结构。 1. **数组**:数组是最基本的数据结构,它允许存储相同类型的数据元素集合。在C++中,你可以直接定义一维或多维数组。实验...
"数据结构实验迷宫实现(C++代码)"这个标题暗示了我们将深入到数据结构和算法的世界,特别是与图和搜索策略相关的知识。迷宫问题通常涉及在二维网格中找到从起点到终点的有效路径,而C++作为一种强大的编程语言,...
根据提供的文件信息,这里主要关注的是“C++数据结构与算法(第4版)”这一主题,虽然实际内容并未给出具体章节或知识点,但我们可以基于标题、描述以及部分已知内容来推测书中可能涵盖的关键知识点。 ### C++数据...
在这个"C++数据结构实验"中,我们将专注于栈(Stack)、队列(Queue)以及二叉树(Binary Tree)这三种基础但至关重要的数据结构。下面将详细阐述这些知识点。 **1. 栈(Stack)** 栈是一种线性数据结构,遵循...
《数据结构(C++版)实验书》是针对计算机及相关专业学生的重要教材,由王红梅、胡明、王涛等人主编,清华大学出版。这本书旨在教授数据结构的基础知识,特别是线性结构、树结构和图结构的逻辑存储实现以及相关的...
在这个C++数据结构实验作业中,我们将探讨如何在C++中实现等价类,同时利用C语言的数据结构。 等价类的概念源于集合论,指的是在某个特定的条件下,所有元素都可以相互替代的一组元素。在数据结构中,这通常表现为...
最小生成树…… c++ …… 数据结构……
《数据结构(C++版)(第3版)-习题解答与实验指导》是针对学习数据结构的C++编程者的一本重要参考资料。这本书详细解答了数据结构课程中的各类习题,并提供了实用的实验指导,帮助读者深入理解和掌握数据结构的概念...
实验内容涵盖了C++的基础语法和高级特性,如顺序结构、分支结构、循环结构、函数、结构体、指针以及文件操作。此外,还需要运用数据结构中的动态链表,实现插入、删除节点、数据录入和条件检索等功能。 实验方案...
合工大数据结构C++实验报告拉链法哈希表查找算法
本压缩包“各种C++数据结构的实验代码”提供了丰富的源码示例,涵盖了诸如单链表、树以及图等经典数据结构的实现。这些代码可以帮助学习者深入理解数据结构的原理,并通过实践提升编程技能。 1. **单链表**:单链表...
《C++数据结构:查找、排序及其应用》的实验报告主要涵盖了数据结构中两个核心概念:查找和排序,以及它们在实际应用中的实现。实验旨在加深学生对这些基础算法的理解,提升他们的数据处理和综合应用能力。 查找是...
实验一通常会涉及C++的基础语法,包括变量声明、数据类型、运算符、控制结构(如if语句、for循环、while循环)以及函数的使用。理解这些基本元素是编写任何程序的基础。 实验二可能涵盖了C++的函数和数组。函数是...