Что такое “набор” в C++? Когда они полезны?

Можно использовать средства управления диаграммой двумя способами:

Генерация Изображения от Контроллера

Путем генерации диаграммы и возврата его как изображения от действия (поскольку Chatuman обращается к, мне думаю):

Chart chart = new Chart();
chart.BackColor = Color.Transparent;
chart.Width = Unit.Pixel(250);
chart.Height = Unit.Pixel(100);

Series series1 = new Series("Series1");
series1.ChartArea = "ca1";
series1.ChartType = SeriesChartType.Pie;
series1.Font = new Font("Verdana", 8.25f, FontStyle.Regular);
series1.Points.Add(new DataPoint { 
                AxisLabel = "Value1", YValues = new double[] { value1 } });
series1.Points.Add(new DataPoint {
                AxisLabel = "Value2", YValues = new double[] { value2 } });
chart.Series.Add(series1);

ChartArea ca1 = new ChartArea("ca1");
ca1.BackColor = Color.Transparent;
chart.ChartAreas.Add(ca1);

using (var ms = new MemoryStream())
{
    chart.SaveImage(ms, ChartImageFormat.Png);
    ms.Seek(0, SeekOrigin.Begin);

    return File(ms.ToArray(), "image/png", "mychart.png");
}

Стиль WebForms

Этот путь Вы просто включаете диаграмму в свои представления .aspx (точно так же, как с традиционными веб-формами). Для этого необходимо будет поднять трубку соответствующие биты в web.config

<controls>
    ...
    <add tagPrefix="asp"
         namespace="System.Web.UI.DataVisualization.Charting"
         assembly="System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</controls>

<httpHandlers>
    ...
    <add path="ChartImg.axd"
         verb="GET,HEAD"
         validate="false"
         type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</httpHandlers>

<handlers>
    ...
    <add name="ChartImageHandler"
         preCondition="integratedMode" 
         verb="GET,HEAD"
         path="ChartImg.axd"
         type="System.Web.UI.DataVisualization.Charting.ChartHttpHandler, System.Web.DataVisualization, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</handlers>

, Вы не можете выполнить код в элементах DataPoint при создании диаграммы, так для снятия трубки данных, Вам будет нужен метод в классе Представления. Это работает хорошо на меня. Прокладывание себе путь заставляет управление представить URL к изображению, сгенерированному http обработчиком управления диаграммы. В Вашем развертывании необходимо будет обеспечить перезаписываемую папку для него для кэширования изображений.

* VS 2010/.NET 4 Поддержки *

Для получения этой работы в.NET 4 необходимо изменить ссылки диаграммы на версию 4.0.0.0 с соответствующим маркером открытых ключей.

Также кажется, что управление диаграммой теперь генерирует URL к текущему пути запроса, а не маршруту запроса. Для меня это означало, что все запросы диаграммы привели к 404 ошибкам, потому что /{Controller}/ChartImg.axd и эквиваленты были заблокированы маршрутами. Для фиксации этого, я добавил дополнительные вызовы IgnoreRoute, которые покрывают мои использования - более общее решение было бы лучше:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.IgnoreRoute("ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/ChartImg.axd/{*pathInfo}");
    routes.IgnoreRoute("{controller}/{action}/ChartImg.axd/{*pathInfo}");
...
5
задан Andreas DM 25 May 2015 в 22:56
поделиться

8 ответов

Не расстраивайтесь, если у вас проблемы с пониманием сетов в целом. По большей части математика уходит на изучение теории множеств:

http://en.wikipedia.org/wiki/Set_theory

Думайте о множестве как о совокупности уникальных неупорядоченных объектов. Во многом это похоже на список:

{1, 2, 3, 4}

, но порядок не важен:

{4, 3, 2, 1} = {1, 2, 3, 4 }

и повторения игнорируются:

{1, 1, 2, 3, 4} = {1, 2, 3, 4}

Набор C ++ является реализацией этого математического объекта с нечетным функция, которая отсортирована внутри. Но это всего лишь деталь реализации, которая не имеет отношения к пониманию структуры данных. Сортировка нужна только для скорости.

27
ответ дан 18 December 2019 в 05:21
поделиться

Наборы C ++ STL - это ассоциативные сопоставления, которые гарантируют как сортировку, так и уникальность элементов в наборе (мультимножества гарантируют первое, но не второе).

Обычно они используются как часть операций над наборами - такие вещи, как объединения, пересечения и другие взаимодействия, включающие включение / исключение элементов в наборе.

5
ответ дан 18 December 2019 в 05:21
поделиться

«Набор» - это разновидность коллекции, в которой хранится несколько уникальных объектов. Это полезно, когда вы хотите собирать объекты, но не заботитесь об их порядке или о том, сколько раз в нем находятся одни и те же объекты.

Подробнее см. Здесь: Установить в C ++

3
ответ дан 18 December 2019 в 05:21
поделиться

Наборы «в целом» - это (очень фундаментальное) понятие в математике.

Набор STL основан на математической концепции набора: это набор уникальных членов или «Уникальный ассоциативный контейнер» в терминологии STL. Немного странно то, что он сортирует элементы (в математическом наборе элементов нет «порядка»).

Некоторые реализации STL также поддерживают hash_set , который очень похож на

1143561] набор , поскольку он также является аналогом математической концепции набора. Большие различия между set и hash_set состоят в том, что hash_sets не сортируют свои элементы, они имеют разные характеристики производительности (O (1), а не O (log n) поисков, предполагая хорошая хеш-функция),

3
ответ дан 18 December 2019 в 05:21
поделиться

Что это такое?

Набор - это коллекция.

Набор похож на словарь или «карту» пар ключ / значение, за исключением того, что он хранит только (является набор) ключей без связанных значений.

Набор содержит или не содержит экземпляров каждого возможного значения ключа. Например, набор целых чисел может содержать значения {0, 1, 5}. Значение (например, 5) не может содержаться в наборе более одного раза (если вы вызываете метод вставки набора более одного раза для данного значения ключа, набор все равно будет содержать только один экземпляр этого значения ключа).

Чем они полезны?

Я использую их не так часто, как карты.

Один раз я использую набор, если я являюсь библиотекой, которая выдает указатели, которые клиент использует в качестве дескриптора. Я сохраню частный набор, содержащий все действительные значения дескрипторов, которые я создал.

2
ответ дан 18 December 2019 в 05:21
поделиться

Цитата из Википедии:

Набор - это совокупность различных объекты, рассматриваемые как объект в собственное право. Наборы являются одним из самые фундаментальные концепции в математика. Хотя это было изобретено в конце 19 века установлен теория теперь является неотъемлемой частью математике и может использоваться как фундамент, из которого почти все математика может быть получена.

0
ответ дан 18 December 2019 в 05:21
поделиться

STL набор - это красно-черное дерево (по крайней мере, я думаю, что это реализовано так)

Другой способ взглянуть на это .

Следовательно, свойства, быстрый поиск элементов, упорядочение элементов, уникальность элементов, упорядоченный обход и т. Д.

Это полезно, когда вы хотите отслеживать уникальные элементы, такие как, например, список уникальных строк или целых чисел, но вы может также хранить более сложные структуры.

0
ответ дан 18 December 2019 в 05:21
поделиться

Для неупорядоченной реализации наборов на C ++ ознакомьтесь с Boost.Unordered . Во многих случаях это лучший выбор, чем набор STL, который я лично более или менее использую только для постепенного построения отсортированного списка.

0
ответ дан 18 December 2019 в 05:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: