我想将值插入 vector
的 set<int>
,这是使用 typedef
定义的如下所示:
typedef std::set<int> blockSet_t;
std::vector<blockSet_t>* myvector
我想要这样的值 myvector[0]
有一个 set
的 int
小号,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
中的值.
因为它是 set
的 vector s,我想显示每个 set
(在不同的 vector
索引上)。
非常感谢这方面的任何帮助。
谢谢。
最佳答案
首先,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
的重载函数类(class)。这是在 C++ 中打印值的常用方法。
假设您要打印 set
curl {}
方括号和 vector []
一个:
#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;
}
关于c++ - 在 C++ 中的 int 集 vector 中插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35518781/