С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572

Метод Any для коллекции List

02.01.2019, 02:49. Показов 2965. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне нужно вызвать метод Any для коллекции List.
C++
1
static List<id_cells^>^ idc = gcnew List<id_cells^>();
Как в этой статье. Дело в том, что в языке С++ я не нашла метод Any. Есть add, contains, clear, а метода any нету. Как вызвать метод Any?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.01.2019, 02:49
Ответы с готовыми решениями:

Отображение в listBox поля элемента из коллекции коллекций List<List<>>
Есть карта в pictureBox-е. На ней мышкой ставяться флажки(маркеры). Нужно хранить их в БД с возможностью добавлять/удалять/изменять...

Коллекции List/ArrayList: чем отличаются и для чего нужны?
ОБЪЯСНИТЕ ЧТО ТАКОЕ LIST И ARRAYLIST,ЧЕМ ОНИ ОТЛИЧАЮТСЯ И ДЛЯ ЧЕГО НУЖНЫ ВОТ ЕЩЕ ДВА ЗАДАНИЯ,Я ЧТО-ТО ПОПЫТАЛСЯ СДЕЛАТЬ,НО ПОКА ЧТО НЕ...

Массивы и коллекции - метод для поиска
Добрый день! Моя задача : ввод с клавиатуры данных в массив, состоящий из объектов типа Note; записи должны быть упорядочены по датам дней...

12
Комп_Оратор)
Эксперт по математике/физике
 Аватар для IGPIGP
9005 / 4706 / 630
Регистрация: 04.12.2011
Сообщений: 14,003
Записей в блоге: 16
02.01.2019, 11:10
Katerina1993, не понял вопроса. Посмотрите вот тут:
Метод FindIndex в List<>^
может поможет.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18252 / 14177 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 1
02.01.2019, 12:17
Katerina1993, метод Any это расширяющий метод. В C++/CLI нет их поддержки. В том смысле что их нельзя вызвать так как в C#/VB.NET - как экземплярные члены. Нужно вызывать их как обычные static методы.
C++
1
2
Enumerable::Any(idc) // Первая перегрузка 
Enumerable::Any(idc, экземпляр делегата) // Вторая перегрузка
1
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
02.01.2019, 14:51  [ТС]
В сети очень мало информации по Enumerable::Any на С++, в основном только на C#. Но всё таки мне удалось найти одну статью, там написано, что нужно подключать пространство имён
C++
1
using namespace System::Linq;
При подключении выдаёт ошибку.
error C2039: Linq: не является членом "System"
и
error C2871: Linq: пространство имен с таким именем не существует
Добавлено через 40 секунд
У меня программа Visual C++ 2008 года.
0
Эксперт .NET
6691 / 4102 / 1607
Регистрация: 09.05.2015
Сообщений: 9,574
02.01.2019, 14:56
Enumerable.Any Method
Пространство имен: System.Linq
Assemblies: System.Linq.dll, System.Core.dll, netstandard.dll
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18252 / 14177 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 1
02.01.2019, 14:59
Katerina1993, необходимо сначала добавить ссылку (reference) на сборку System.Core. Как это делается в VS 2008 не помню и под рукой ее нет. Посмотри команды контекстного меню проекта, "папки" References (если она есть в проекте) и в свойствах проекта. Где-то в одном из этих мест должна найтис нужная тебе команда.
0
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
02.01.2019, 15:45  [ТС]
Перешла по ссылке из 5 поста, просмотрела всю информацию которую нашла по этой ссылке. Написано
Комментарии
System.Linq Пространство имен находится в сборке System.Core (в библиотеке System.Core.dll).
Поэтому захожу Проект->Свойства->Добавить новую ссылку выбираем System.Core, потом добавляю пространство имён
C++
1
using namespace System::Linq;
И эта сточка начинает работать.
C++
1
Enumerable::Any(idc);
Но всё равно пример который на C# из (одного видео урока) не представляю как можно реализовать.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
private: System::Void board_CellPainting(System::Object^  sender, System::Windows::Forms::DataGridViewCellPaintingEventArgs^  e) {
    String ^number = "";
    if(e->RowIndex>=0)
    {
                //Enumerable::Any(idc);
                               //Это на СSHARP
                if(idc.Any(c => number = c.number)!="" && c.X == e.ColumnIndex && c.Y == e.RowIndex)
                {
                }
                
        }
            
      }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18252 / 14177 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 1
02.01.2019, 16:32
Katerina1993, код на C# некоректный и поэтому переводить на C++ пока не получится. Получи сначала правильный код на C# и выложи его сюда.
0
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
02.01.2019, 17:43  [ТС]
Для этого нужно C# устанавливать, а у меня место ограничено. Лучше скажите почему мои темы всё время переносят с "С++ для начинающих" в "C++/CLI" какая разница?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18252 / 14177 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 1
02.01.2019, 17:54
Katerina1993, C# для этого устанавливать НЕ нужно. Мы же не просим тебя компилировать код на C#, а только выложить корректный код.

Цитата Сообщение от Katerina1993 Посмотреть сообщение
почему мои темы всё время переносят с "С++ для начинающих" в "C++/CLI" какая разница?
C++/CLI это особый диалект C++ для которого специально выделен свой раздел. Многие программисты на C++ не знакомы с C++/CLI и чтобы не создавать путаницу темы по C++/CLI переносятся в свой раздел, в который заходят люди знакомые с ним. Кроме того схожие темы группируются в одном разделе. Точно также для разных технологий и сред есть свои подразделы - C++ Builder, Visual C++.
0
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
03.01.2019, 05:27  [ТС]
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Katerina1993, C# для этого устанавливать НЕ нужно. Мы же не просим тебя компилировать код на C#, а только выложить корректный код.
Не знаю какой нужен корректный код. Вот код который я переписала из видео на C#
C#
1
2
3
4
5
6
7
8
9
10
11
private void board_CellPainting(Object sender, DataGridViewCellPaintingEventArgs e){
             String number = "";
             if(idc.Any(c => (number = c.number) != "" && c.X == e.ColumnIndex && c.Y == e.RowIndex)){
                Rectangle r = new Rectangle(e.CellBounds.X, e.CellBounds.Y, e.CellBounds.Width, e.CellBounds.Height);
                e.Graphics.FillRectangle(Brushes.White, r);
                e.Graphics.DrawString(number, f, Brushes.Black, r);
                e.PaintContent(e.ClipBounds);
                e.Handled = true;
             }
         
         }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18252 / 14177 / 5366
Регистрация: 17.03.2014
Сообщений: 28,863
Записей в блоге: 1
03.01.2019, 12:15
Лучший ответ Сообщение было отмечено Katerina1993 как решение

Решение

Цитата Сообщение от Katerina1993 Посмотреть сообщение
Не знаю какой нужен корректный код.
Тот в котором нет ошибок компиляции. В прошлом примере они были, в новом нет.

Вот как это можно переписать на C++. Any я заменил на обычный цикл потому что в C# используется замыкание на локальную переменную и переписавание один в один только усложнило бы код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
private: System::Void board_CellPainting(System::Object^  sender, System::Windows::Forms::DataGridViewCellPaintingEventArgs^  e)
{
    for (size_t i = 0; i < idc->Count; i++)
    {
        id_cells^ c = idc[i];
        if (c->number != "" && c->X == e->ColumnIndex && c->Y == e->RowIndex)
        {
            System::Drawing::Rectangle r(e->CellBounds.X, e->CellBounds.Y, e->CellBounds.Width, e->CellBounds.Height);
            e->Graphics->FillRectangle(Brushes::White, r);
            e->Graphics->DrawString(c->number, f, Brushes::Black, r);
            e->PaintContent(e->ClipBounds);
            e->Handled = true;
 
            break;
        }
    }
}
1
403 / 19 / 5
Регистрация: 17.01.2017
Сообщений: 572
03.01.2019, 15:32  [ТС]
Теперь работает, только переменная f означает шрифт, я просто забыла дописать.
C++
1
System::Drawing::Font^ f = gcnew System::Drawing::Font(e->CellStyle->Font->FontFamily,7);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.01.2019, 15:32
Помогаю со студенческими работами здесь

Можно ли вызвать метод Show() для всех книг коллекции
Можно ли вызвать метод Show() для всех книг?? using System; using System.Collections.Generic; using System.Linq; using...

коллекции List<T>
Всем здрасте! к примеру, есть типиизованный список List&lt;T&gt; Items = new List&lt;T&gt;(); добавляем туда какой нибудь элемент ...

Написать метод count для элементов коллекции, которые имеют определенное свойство (add, even)
написать метод count для элементов коллекции, которые имеют определенное свойство (add, even). (2 класса в каждом по 5 строчек должно быть)

метод erase для list(STL)
Всем привет! Не могу понять в чем у меня ошибка. Применяю метод erase в цикле для list, и с помощью него удаляю нужный элемент, но...

Сериализация коллекции List<>
У меня вопрос: soap и xml сериализации работают с коллекциями? У меня вот такой код public class serialization { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru