Вот самый простой способ, который я использовал в своих приложениях. Добавьте нижеуказанные 3 строки кода в App_Start\\WebApiConfig.cs
в функции Register
var formatters = GlobalConfiguration.Configuration.Formatters;
formatters.Remove(formatters.XmlFormatter);
config.Formatters.JsonFormatter.SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
Web-API Asp.net автоматически преобразует ваш возвращаемый объект в JSON и добавит application/json
в заголовке поэтому браузер или получатель поймут, что вы возвращаете результат JSON.
Почему Вы выполнили бы итерации и не использовали бы стандартный алгоритм копии?
std::copy( vector.begin(), vector.end(), std::back_inserter( list ) );
Можно попытаться использовать более хитрые вещи от <algorithm>
заголовок, например for_each
или copy
..., но они составили бы то же самое, по-моему.
Мне нравится это предложение за построение нового списка.
std::list<SomeType> myList(v.begin(), v.end());
, Но при добавлении к существующему списку, следующее может быть оптимальным для небольших наборов данных. "Оптимальным" я подразумеваю, что является самым легким помнить, как сделать и самый легкий понять. (Это субъективные операторы, я уверен, что это зависит от того, как Ваш мозг соединен проводом.)
for ( unsigned i=0; i<v.size(); i++ ) myList.push_back(v[i]);
Используя итераторы на векторах может быть чрезмерно педантичным во многих случаях. Простая индексация обычно хорошо работает.
Другой поток обращается к итераторам по сравнению с индексами ( здесь ). В том потоке взятый ответ в основном предпочел итераторы, потому что они более универсальны. Но если векторы являются обычно используемым контейнерным типом, я думаю, что разумно специализировать этот вид простого алгоритма.
Если Вы составляете новый список, можно обмануть конструктора, который берет начальные и конечные итераторы:
std::list<SomeType> myList(v.begin(), v.end());
ответ Kasprzol прекрасен, если у Вас есть существующий список, Вы хотите добавить к.