问题描述
- vector利用自己定义的类型出错,其解答
-
#include
#include
using namespace std;
class Node
{
public:
Node();
void SetX(int);
int GetX();
private:
int x;
};Node::Node()
{
x = 0;
}
int Node::GetX()
{
return x;
}
void Node::SetX(int i)
{
x = i;
}class test
{
public:
void Add(Node*);
vector GetNode();
private:
vector m_node;
};void test::Add(Node* node)
{
m_node.push_back(node);
}
vector test::GetNode()
{
return m_node;
}int main()
{
test tes;
for (int i = 0; i < 10; i++)
{
Node* node = new Node;
tes.Add(node);
}vector<Node*>::iterator iter = tes.GetNode().begin(); for (; iter != tes.GetNode().end(); iter++) { cout << (*iter)->GetX() << endl; }
}
解决方案
你刚开始学吧,好好看看vector的用法
class Node
{
public:
Node();
void SetX(int);
int GetX();
private:
int x;
};
Node::Node()
{
x = 0;
}
int Node::GetX()
{
return x;
}
void Node::SetX(int i)
{
x = i;
}
class test
{
public:
void Add(Node* node);
vector<Node*>* GetNode();
private:
vector<Node*> m_node;
};
void test::Add(Node* node)
{
m_node.push_back(node);
}
vector<Node*>* test::GetNode()
{
return &m_node;
}
int main()
{
test tes;
for (int i = 0; i < 10; i++)
{
Node* node = new Node;
node->SetX(i);
tes.Add(node);
}
vector<Node*>::iterator iter = tes.GetNode()->begin();
for (; iter != tes.GetNode()->end(); iter++)
{
cout << (*iter)->GetX() << endl;
}
//最后释放node
}
解决方案二:
谢谢,是的,应该如何释放啊,请指教
解决方案三:
请问如何释放啊,请指教,谢谢
解决方案四:
for (iter = tes.GetNode()->begin(); iter != tes.GetNode()->end(); iter++)
{
delete *iter;
}
//或者
vector<Node*>* vtrTemp = tes.GetNode();
for (int i = 0; i < vtrTemp->size(); i++)
{
delete (*vtrTemp)[i]; // vector元素的另一种使用方法
}
时间: 2024-08-30 12:22:48