Вставить значения в вектор множеств int в C++

Я хочу вставить значения в vector из set<int>, который определяется с помощью typedef как указано ниже:

typedef std::set<int> blockSet_t;
std::vector<blockSet_t>* myvector

Я хочу иметь такие ценности, чтобы myvector[0] имеет set из ints, myvector[1] имеет другой set из intи так далее.

В настоящее время я передаю это vector к функции, которая анализирует файл, который имеет set целых чисел.

Подобно:

main()
{
 std::vector<blockSet_t> myvector;
 filereader(myvector);
}

Я прочитал set из файла и сохранить его в другом blockSet_t myset;

Я использую следующий цикл для хранения этого set в определенное место в vector:

filereader(&myvector)
{
 for(int i=0;i<size;i++)
 {
  myvector.push_back(myset); // It does not give error but I don't know myset is stored in which location
//what I want is to have someting like this

  myvector[i].push_back(myset); //so I can store different sets at different locations
 }
}

Я также не мог понять, как отображать значения изнутриvector,

Так как это вектор sets, я хочу отобразить каждый set (по другому vector индекс).

Любая помощь в этом отношении высоко ценится.

Благодарю.

1 ответ

Прежде всего, push_back функция называется push_back потому что это отталкивает объект назад.

Это означает, что если ваш vector пусто, и вы звоните push_back ваш толкаемый объект будет иметь 0 место нахождения.

Если твой vector имеет n объекты внутри него, это означает, что после push_back ваш толкаемый объект будет иметь nиндекс

myvector.push_back(myset);
std::cout<<"index of myset is "<<myvector.size()-1<<std::endl;

Во-вторых, если вы хотите напечатать значения, вы должны создать свой собственный operator<< функция перегрузки для std::ostream учебный класс. Это распространенный способ печати значений в C++.

Предположим, вы хотите напечатать set в кудрявом {} браслеты и вектор в квадрате [] из них:

#include <ostream>

inline std::ostream& operator<<(std::ostream &os,const blockSet_t &mySet)
{
    os<<"{ ";
    for(const auto &value:mySet)
    {
        os<<value<<' ';
    }
    os<<"};
    return os;
}

inline std::ostream& operator<<(std::ostream &os,const std::vector<blockSet_t> &myvector)
{
    os<<"[ ";
    for(const auto &mySet:myvector)
    {
        os<<mySet<<' ';
    }
    os<<"];
    return os;
}

Далее вы должны cout ваш объект, как это:

#include <ostream>

main()
{
    std::vector<blockSet_t> myvector;
    filereader(myvector);
    std::cout<<myvector<<std::endl;
}
Другие вопросы по тегам