我有结构,让我们称他们为sn,看起来像:
struct sn {
string name;
vector<sn*> connected_to;
};
Run Code Online (Sandbox Code Playgroud)
现在,假设我已经从0 - 9声明了connected_to向量; 我将sn A连接到sn B:
A.connected_to[0] = &B;
Run Code Online (Sandbox Code Playgroud)
我有一种感觉,我会以错误的方式解决这个问题.基本上我正在尝试做的是避免在我连接结构时复制结构...即:
struct sn {
string name;
vector<sn> connected_to;
};
// ...
A.connected_to[0] = B;
Run Code Online (Sandbox Code Playgroud)
这复制了吗?更基本的问题当然是我不明白向量,指针和引用是如何真正深入工作的.
由于大多数人都喜欢谜题,我会用一个(拼写错误:)开始这个问题.想得到介绍,请注意,如果你不关心它,你可以跳过热身(JG问题)并阅读G问题,因为那是我的"真正的问题".
在审查潜在新员工提供的代码示例时,您偶然发现了一个链接列表,其实现使用了现代C++ 11特性,即std :: unique_ptr <>.
template <typename T>
struct Node {
T data;
std::unique_ptr<Node<T>> next;
Node () {}
Node(const T& data_): data(data_) {}
Node(Node& other) { std::static_assert(false,"OH NOES"); }
Node& operator= (const Node& other) {
std::static_assert(false,"OH NOES");
return *new Node();
}
public:
void addNext(const T& t) {
next.reset(new Node<T>(t));
}
};
template<typename T>
class FwdList
{
std::unique_ptr<Node<T>> head;
public:
void add(const T& t)
{
if (head == nullptr)
head.reset( new Node<T>(t));
else {
Node<T>* curr_node = head.get(); …Run Code Online (Sandbox Code Playgroud)