Большое количество в C++

В своем xaml-файле вы привязываете SelectedItem к SelectColorList, который является коллекцией, чтобы исправить это, вы должны привязать одно значение (некоторое строковое свойство в вашем случае), а не коллекцию.
ОБНОВЛЕНИЕ:
& emsp; Прежде всего, я хочу упомянуть, что нет способа для множественного связывания, поэтому мы будем использовать событие SelectionChanged.
& emsp; Например, это ваш вид, который содержит два списка, один из которых будет содержать источник цветов, который будет иметь возможность выбора нескольких элементов:

<Window x:Class="WpfApp1.MainWindow">
    <StackPanel Orientation="Horizontal">
        <!-- First list box contains colors -->
        <ListBox
            ItemsSource="{Binding ColorList}"
            SelectionMode="Extended"
            SelectionChanged="ListBox_SelectionChanged"
            />
        <!-- Second list box will contain result values -->
        <ListBox
            ItemsSource="{Binding ItemList}"
            />
    </StackPanel>
</Window>

[116 ]
& emsp; Ваш MainWindow.xaml.cs:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        // Set data context
        DataContext = new ViewModel();
    }

    /// <summary>
    /// Called when selection is changed
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="e"></param>
    private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
    {
        // Get event sender
        var listBox = sender as ListBox;
        // Create temp list for selected items
        var tempList = new List<string>();

        foreach (string item in listBox.SelectedItems)
        {
            tempList.Add(item);
        }

        (DataContext as ViewModel).OnSelectionChanged(tempList);
    }
}


& emsp; И, наконец, модель вашего представления:

public class ViewModel : INotifyPropertyChanged
{
    #region Private Fields
    private ObservableCollection<string> mColorList;
    private ObservableCollection<string> mItemList;
    #endregion

    #region Public Properties
    /// <summary>
    /// This is list box 1 items source with colors
    /// </summary>
    public ObservableCollection<string> ColorList
    {
        get { return mColorList; }
        set
        {
            mColorList = value;
            NotifyPropertyChanged(nameof(ColorList));
        }
    }

    /// <summary>
    /// This is list box 2 items with results
    /// </summary>
    public ObservableCollection<string> ItemList
    {
        get { return mItemList; }
        set
        {
            mItemList = value;
            NotifyPropertyChanged(nameof(ItemList));
        }
    }
    #endregion

    #region Constructor
    public ViewModel()
    {
        // Initialization 
        ColorList = new ObservableCollection<string>() { "red", "blue", "yellow", "green" };
        ItemList = new ObservableCollection<string>() { "not selected!" };
    }
    #endregion

    #region Public Methods
    /// <summary>
    /// Called when selection is changed
    /// </summary>
    /// <param name="selectedItems"></param>
    public void OnSelectionChanged(IEnumerable<string> selectedItems)
    {
        ItemList.Clear();
        foreach (var item in selectedItems)
        {
            switch (item)
            {
                case "red":
                    ItemList.Add("apple");
                    ItemList.Add("sun");
                    break;
                case "blue":
                    ItemList.Add("sea");
                    ItemList.Add("sky");
                    break;
            }
        }
    }
    #endregion

    #region InterfaceImplementation
    public event PropertyChangedEventHandler PropertyChanged;

    public void NotifyPropertyChanged(string propertyName)
    {
        PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
    #endregion
}
[ 1113]
Вот как это можно сделать. Надеюсь, этот ответ поможет вам

10
задан Hooked 6 March 2015 в 04:44
поделиться

7 ответов

Можно указать целочисленный литерал как долго суффиксом L.
Можно указать целочисленный литерал как долго долго суффиксным LL.

#include <iostream>

int main()
{
    long long num = 600851475143LL;

    std::cout << num;
}
23
ответ дан 3 December 2019 в 13:41
поделиться

Число равняется 600851475143, не является слишком большим для долгого длинного целого, но необходимо использовать суффикс LL при использовании длинных длинных констант (ULL для неподписанного долгого длинного целого):

unsigned long long int num = 600851475143ULL;
12
ответ дан 3 December 2019 в 13:41
поделиться

Смысл существования крупной целочисленной библиотеки должен представить целые числа, которые Ваш язык не может обработать исходно. Это означает, Вы не можете даже записать его как литерал. Вероятно, та библиотека имеет способ проанализировать строку как большое количество.

3
ответ дан 3 December 2019 в 13:41
поделиться

В более общем случае, когда Вы не можете приспособить свое число в длинном длинном, и можете жить с лицензией LGPL GNU (http://www.gnu.org/copyleft/lesser.html), я предложил бы пробовать Библиотеку Мультиточности GNU (http://gmplib.org/).

Это чрезвычайно быстро, записано в C и идет с очень прохладным C ++-wrapper-library.

2
ответ дан 3 December 2019 в 13:41
поделиться

Существует ли bigint lib для соединения в или bigint.cpp для компиляции?

1
ответ дан 3 December 2019 в 13:41
поделиться

Если Вы получаете неопределенные ссылочные ошибки для библиотеки сверхбольшого числа, Вы, вероятно, не связали ее. На Unix необходимо будет передать опцию как-lbigint. При использовании IDE необходимо будет найти настройки компоновщика и добавить библиотеку.

Что касается чисел, как был уже сказан, естественная константа значения по умолчанию к международному типу. Необходимо использовать LL/ll для получения длинного долго.

1
ответ дан 3 December 2019 в 13:41
поделиться

Первое, что нужно сделать в этом случае состоит в том, чтобы выяснить то, что является наибольшим числом, что можно вписываться в неподписанное длинное долго. Так как это - 64 бита, наибольшее число было бы 2^64-1 = 18446744073709551615, который больше, чем Ваше число. Затем Вы знаете о выполнении чего-то не так, и Вы смотрите на ответ Martin York, чтобы видеть, как зафиксировать его.

1
ответ дан 3 December 2019 в 13:41
поделиться
Другие вопросы по тегам:

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