Вы уже получили несколько ответов, в которых упоминается std::for_each
.
Хотя они отвечают на вопрос, который вы задали, я бы добавил, что, по крайней мере, по моему опыту, std::for_each
- это минимум , полезный из стандартных алгоритмов.
Я использую (для одного примера) std::transform
, что в основном a[i] = f(b[i]);
или result[i] = f(a[i], b[i]);
гораздо чаще, чем std::for_each
. Многие люди часто используют std::for_each
для печати элементов коллекции; для этого std::copy
с std::ostream_iterator
в качестве пункта назначения работает намного лучше.
Первоначальная реакция, просто чтобы подтвердить, что я могу воспроизвести это:
using System;
using System.Xml.Linq;
class Test
{
static void Main(string[] args)
{
string xml = "<?xml version=\"1.1\" ?><root><sub /></root>";
XDocument doc = XDocument.Parse(xml);
Console.WriteLine(doc);
}
}
Результаты в этом исключении:
Unhandled Exception: System.Xml.XmlException: Version number '1.1' is invalid. Line 1, position 16.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.Throw(String res, String arg)
at System.Xml.XmlTextReaderImpl.ParseXmlDeclaration(Boolean isTextDecl)
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.Linq.XDocument.Load(XmlReader reader, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text, LoadOptions options)
at System.Xml.Linq.XDocument.Parse(String text)
at Test.Main(String[] args)
Это все еще не работает с .NET 4.6.
«Версия 1.0» жестко закодирована в различных местах стандартных библиотек .NET XML. Например, ваш код, кажется, не соответствует этой строке в System.Xml.XmlTextReaderImpl.ParseXmlDeclaration (bool):
if (!XmlConvert.StrEqual(this.ps.chars, this.ps.charPos, charPos - this.ps.charPos, "1.0"))
У меня была аналогичная проблема с XDocument.Save, который отказался сохранить 1.1. Это был тот же тип вещей - жестко запрограммированная "1.0" в методе System.Xml.
Я не мог найти никакого другого варианта, который все еще использовал бы стандартные библиотеки.
if (!XmlConvert.StrEqual(this.ps.chars, this.ps.charPos, charPos - this.ps.charPos, "1.0"))
У меня была аналогичная проблема с XDocument.Save, который отказывался сохранить 1.1. Это был тот же тип вещей - жестко запрограммированная "1.0" в методе System.Xml.
Я не мог найти никакого другого варианта, который все еще использовал бы стандартные библиотеки.
if (!XmlConvert.StrEqual(this.ps.chars, this.ps.charPos, charPos - this.ps.charPos, "1.0"))
У меня была аналогичная проблема с XDocument.Save, который отказывался сохранить 1.1. Это был тот же тип вещей - жестко запрограммированная "1.0" в методе System.Xml.
Я не мог найти никакого другого варианта, который все еще использовал бы стандартные библиотеки.