我对所有C ++编码人员提出了一个小问题! 对你来说,它是否兼容" C ++哲学"重新编码自己的智能指针。 实际上我将shared_ptr与weak_ptr一起用于项目,但它使代码过于复杂。 我当然可以使用raw_ptr,但是......它"普通c" ... 那你觉得怎么样? 我应该重新编写自己的智能指针还是继续使用shared_ptr和weak_ptr
答案 0 :(得分:5)
与“C ++哲学”兼容,可以重新编码自己的智能指针
不,这是不必要的,浪费时间。标准库提供了智能指针,标准库在每个符合要求的实现中都可用。
除非您非常有充分理由不这样做,否则请使用using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME1 = @"c:\temp\test.xml";
const string FILENAME2 = @"c:\temp\test1.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME1);
Dictionary<string, string> dict = doc.Descendants("Columns").FirstOrDefault().Elements()
.GroupBy(x => (string)x.Attribute("XPath"), y => (string)y.Attribute("Name"))
.ToDictionary(x => x.Key, y => y.FirstOrDefault());
XDocument order = XDocument.Load(FILENAME2);
List<XElement> positions = order.Descendants("Position").ToList();
foreach (XElement position in positions)
{
foreach (XAttribute attribute in position.Attributes())
{
string name = attribute.Name.LocalName;
string value = (string)attribute;
if(dict.ContainsKey("@" + name))
{
string xName = dict["@" + name];
Console.WriteLine("Key = '{0}', Name = '{1}'", name, xName);
}
else
{
Console.WriteLine("Not in dictionary : Key = '{0}'", name);
}
}
}
}
}
}
。