之前在写一个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.实验内容与要求 1)理解线性表的概念 2)设计一个线性表,分别用顺序存储结构和链式存储结构实现,完成线性表的构造、查找、插入、删除、输出等基本操作。 3)掌握两种存储...
在这个“数据结构实验 C++”中,我们将深入探讨如何利用C++来构建和操作各种数据结构。 1. **数组**:数组是最基本的数据结构,它允许存储相同类型的数据元素集合。在C++中,你可以直接定义一维或多维数组。实验...
"数据结构实验迷宫实现(C++代码)"这个标题暗示了我们将深入到数据结构和算法的世界,特别是与图和搜索策略相关的知识。迷宫问题通常涉及在二维网格中找到从起点到终点的有效路径,而C++作为一种强大的编程语言,...
c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统实验报告c++商品管理系统...
### 数据结构与算法教程(C++版) #### 1. 数据结构基础 - **数组(Array)**:数组是一种最基本的数据结构,用于存储相同类型的数据元素。在 C++ 中,数组可以通过声明指定长度的方式来创建。 - **链表(List)**:链表...
C++与数据结构基础简明教程
在这个"C++数据结构实验"中,我们将专注于栈(Stack)、队列(Queue)以及二叉树(Binary Tree)这三种基础但至关重要的数据结构。下面将详细阐述这些知识点。 **1. 栈(Stack)** 栈是一种线性数据结构,遵循...
在这个C++数据结构实验作业中,我们将探讨如何在C++中实现等价类,同时利用C语言的数据结构。 等价类的概念源于集合论,指的是在某个特定的条件下,所有元素都可以相互替代的一组元素。在数据结构中,这通常表现为...
最小生成树…… c++ …… 数据结构……
这实验是我们本学期所做的实验包括: 1.单向链表实验,最主要的是一个合并操作; 2.表达式求值实验:输入中缀表达式,输出后缀表达式,并对表达式求值; 3:二叉树实验: 1)通过输入带括号的嵌套序列构造树; 2)...
在本实验中,我们将深入探讨数据结构中的一个重要概念——图,并使用C++编程语言来实现图的各种操作。图是一种非线性数据结构,由顶点(节点)集合和顶点之间的边集合构成,广泛应用于网络设计、路由算法、社交网络...
实验内容涵盖了C++的基础语法和高级特性,如顺序结构、分支结构、循环结构、函数、结构体、指针以及文件操作。此外,还需要运用数据结构中的动态链表,实现插入、删除节点、数据录入和条件检索等功能。 实验方案...
合工大数据结构C++实验报告拉链法哈希表查找算法
首先,C++实验通常涵盖基础语法、数据类型、控制结构、函数、类和对象、模板、异常处理等核心概念。例如,`C++EXP02`可能涉及的是函数的使用,学生可能需要编写不同类型的函数,包括主函数、自定义函数,学习如何...
在这个"C++实验题目含答案"的压缩包中,我们预计会找到一系列针对初学者至进阶者的C++实验题目,以及相应的解答,旨在帮助学习者更好地理解和掌握C++语言。 1. **基础语法**:实验题目可能包括变量声明、数据类型...
实验二至实验四关注C++的面向过程编程,包括类的定义和使用,多文件结构以及静态成员的运用,这些都是C++面向对象编程的基础。 实验五至实验六涉及面向对象编程的关键特性,如类的继承和派生,虚函数的使用以及...