Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.07.2020, 15:54   #1
tsvigo
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию Автовставка текста с изменением числа.

Надо вставить 140 определений класса где просто меняется номер экземпляра класса.
tsvigo вне форума Ответить с цитированием
Старый 08.07.2020, 03:25   #2
Stypler
Новичок
Джуниор
 
Регистрация: 08.07.2020
Сообщений: 6
По умолчанию

Цитата:
Сообщение от tsvigo Посмотреть сообщение
Надо вставить 140 определений класса где просто меняется номер экземпляра класса.
Использовать цикл как вариант
Stypler вне форума Ответить с цитированием
Старый 08.07.2020, 18:20   #3
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

tsvigo, какой язык?

что значит "вставить определение класса" ?
Алексей1153 вне форума Ответить с цитированием
Старый 08.07.2020, 18:39   #4
tsvigo
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
tsvigo, какой язык?

что значит "вставить определение класса" ?
Язык C++. Это значит создать определённый объект который принадлежит данному классу.
tsvigo вне форума Ответить с цитированием
Старый 08.07.2020, 19:06   #5
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

tsvigo, ну, тогда уж "140 экземпляров класса". Определение - это "чертёж" класса , экземпляр - объект в памяти по этому чертежу


Цитата:
Сообщение от tsvigo Посмотреть сообщение
меняется номер экземпляра класса.
если нужен уникальный номер в пределах жизни инстанса приложения, то подойдёт статическая переменная в статической функции класса

как-то так
Код:
class A
{
public:
 static uint32_t gen_ID()
 {
    static uint32_t ID=0;//тут не учитывается многопоточность. Для учёта - юзать std::atomic
    return ++ID;//гарантируем, что 0 - невалидное значение
 }
};
Чуть менее красивый вариант - глобальная переменная

Последний раз редактировалось Алексей1153; 08.07.2020 в 19:11.
Алексей1153 вне форума Ответить с цитированием
Старый 10.07.2020, 22:16   #6
tsvigo
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Алексей1153 Посмотреть сообщение
tsvigo, ну, тогда уж "140 экземпляров класса". Определение - это "чертёж" класса , экземпляр - объект в памяти по этому чертежу



если нужен уникальный номер в пределах жизни инстанса приложения, то подойдёт статическая переменная в статической функции класса

как-то так
Код:
class A
{
public:
 static uint32_t gen_ID()
 {
    static uint32_t ID=0;//тут не учитывается многопоточность. Для учёта - юзать std::atomic
    return ++ID;//гарантируем, что 0 - невалидное значение
 }
};
Чуть менее красивый вариант - глобальная переменная
--------------------------------------------------------------------------------------------------------
Мы друг друга не поняли.
Код:
class klaster // объявление класса
{
	 // по умолчанию private // данные:
	// Количество нейронов в кластере
	int kolichestvo_neironov_v_clastere;
	// Количество синапсов в кластере
	int kolichestvo_sinapsov_v_clastere;
	/////////////////////////////////////////////////////////////////////
public:
	void funktsiya() // функция
	{
		
	}
	///////////////////////////////////////////////////////////////////////////////////
	int funktsiya2() // функция
	{
	
    	}

};

klaster klaster1; // объявление экземпляра класса - определение класса.
У Вас не получится добавить номер к названию экземпляра класса - klasterID при помощи функции класса.
Надо вручную писать в коде:
klaster klaster1;
klaster klaster2;
klaster klaster3;
и так далее до 140. Так и мой вопрос как автоматизировать эту задачу.
tsvigo вне форума Ответить с цитированием
Старый 10.07.2020, 22:51   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

tsvigo, насчёт терминов:

klaster klaster1; // объявление экземпляра класса - определение класса.


Цитата:
Сообщение от tsvigo Посмотреть сообщение
как автоматизировать эту задачу.
Код:
#include <iostream>
#include <vector>

class klaster // объявление класса
{
public:
    using td_ID=uint32_t;
    static td_ID gen_ID()
    {
      static td_ID ID=0;
      return ++ID;
    }
private:
    //уникальный идентификатор
    td_ID m_ID=0;
    // Количество нейронов в кластере
    int kolichestvo_neironov_v_clastere=0;
    // Количество синапсов в кластере
    int kolichestvo_sinapsov_v_clastere=0;
    /////////////////////////////////////////////////////////////////////
public:
    klaster():m_ID(gen_ID()){}

    td_ID ID()const    
    {
        return m_ID;
    }
};

int main()
{
    klaster klaster1;
    klaster klaster2;
    klaster klaster3;    
    std::cout << klaster1.ID()<<'\n';   
    std::cout << klaster2.ID()<<'\n';   
    std::cout << klaster3.ID()<<'\n';   

    //ещё 140 штук    
    std::vector<klaster> list{140};
    
    for(const auto& i:list)std::cout << i.ID()<<'\n';   

    return 0;
}
Алексей1153 вне форума Ответить с цитированием
Старый 10.07.2020, 22:55   #8
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

наверное, вместо вектора можно сделать такой контейнер
Код:
std::map<klaster::td_ID,klaster>
тогда будет удобно искать экземпляр по его имени

если упорядочивание не важнО, то может пригодится std::unordered_map - заполняется он чуть дольше, но поиск очень быстрый. Я так понимаю, в нейросети поиск используется очень часто
Алексей1153 вне форума Ответить с цитированием
Старый 10.07.2020, 23:06   #9
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

вот все варианты
Код:
#include <iostream>
#include <vector>
#include <map>
#include <unordered_map>

class klaster // объявление класса
{
public:
    using td_ID=uint32_t;
    static td_ID gen_ID()
    {
      static td_ID ID=0;
      return ++ID;
    }
private:
    //уникальный идентификатор
    td_ID m_ID=gen_ID();
    // Количество нейронов в кластере
    int kolichestvo_neironov_v_clastere=0;
    // Количество синапсов в кластере
    int kolichestvo_sinapsov_v_clastere=0;
    /////////////////////////////////////////////////////////////////////
public:

    td_ID ID()const    
    {
        return m_ID;
    }
};

int main()
{
    std::cout <<"отдельные экземпляры"<<'\n';
    klaster klaster1;
    klaster klaster2;
    klaster klaster3;    
    std::cout << klaster1.ID()<<'\n';   
    std::cout << klaster2.ID()<<'\n';   
    std::cout << klaster3.ID()<<'\n';   

    std::cout <<"vector"<<'\n';
    {
        std::vector<klaster> list{10};
        for(const auto& i:list)std::cout << i.ID()<<'\n';   
    }
    
    std::cout <<"map"<<'\n';
    {
        using td_map1=std::map<klaster::td_ID,klaster>;
        td_map1 map1;
        for(int i=0; i<5;i++)
        {
            klaster item;
            map1.emplace(item.ID(),item);
        }
        for(const auto& i:map1)std::cout << i.second.ID()<<'\n';   
    }
    
    std::cout <<"unordered_map"<<'\n';
    {
        using td_map2=std::unordered_map<klaster::td_ID,klaster>;
        td_map2 map2;
        for(int i=0; i<5;i++)
        {
            klaster item;
            map2.emplace(item.ID(),item);
        }
        for(const auto& i:map2)std::cout << i.second.ID()<<'\n';   
    }

    return 0;
}
Алексей1153 вне форума Ответить с цитированием
Старый 12.07.2020, 18:55   #10
tsvigo
Пользователь
 
Регистрация: 11.07.2011
Сообщений: 12
По умолчанию

Код:
#include <stdlib.h>
class klaster
{
public:
   // int nomer_klastera; // по умолчанию private // данные
    int nomer_klastera = 0;

public:
    
    int generator_nomera() // функция
    {
       
         nomer_klastera = nomer_klastera++;

         return nomer_klastera;

    }
};
klaster klaster; // создание объекта класса
///////////////////////////////////////////////////////////////
int main()
{
   
	for (int i = 0; i < 140; i++)
	{
		std::cout <<"klaster"<< klaster.generator_nomera() << "\n";
	}

}

Последний раз редактировалось tsvigo; 12.07.2020 в 18:58.
tsvigo вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
автовставка текста C4eLoveK Общие вопросы Delphi 2 25.07.2012 15:30
Автовставка заголовка AVladislav Visual C++ 0 06.07.2011 12:34
Передвижение объектов с изменением текста Alexei89 Мультимедиа в Delphi 0 03.04.2011 02:31
АВТОВСТАВКА В ОКНО ПОИСКА pringls Microsoft Office Word 1 29.10.2010 11:36
Автовставка даты djbub14 Microsoft Office Excel 1 15.08.2010 12:54