我正在使用一些容器。参考向量存在问题,无法正常检测。
error C2039: 'vecMsg' : is not a member of 'std::_Vector_iterator <std::_Vector_val>std::_Simple_types<T2 &>>>'
Run Code Online (Sandbox Code Playgroud)
为什么无法识别成员变量?
vector<T1> vec1;
vector<T2> vec2;
vector<T1>::iterater iVec1;
vector<T2>::iterater iVec2;
vector<T2&>::iterater iInVec;
struct T1
{
public:
vector<T2&> inVec;
}
struct T2
{
public:
vector<std::string> vecMsg;
}
Run Code Online (Sandbox Code Playgroud)
在 vec1.inVec 中输入一些数据
for(iVec1 = vec1.begin(); iVec1 != vec1.end(); iVec1++)
{
for(iVec2 = vec2.begin(); iVec2 != vec2.end(); iVec2++)
{
// blaa if
iVec1->inVec.push_back(*iVec2);
}
}
Run Code Online (Sandbox Code Playgroud)
访问 vec1.inVec 中的 vecMsg
for(iVec1 = vec1.begin(); iVec1 != vec1.end(); iVec1++)
{
for(iInVec = iVec1->inVec.begin(); iInVec != …Run Code Online (Sandbox Code Playgroud) 我使用了poll()和std :: vector.注册听socket.
std::vector<struct pollfd> fds;
fds.push_back(server_sock);
Run Code Online (Sandbox Code Playgroud)
并添加新的客户端套接字或连接的客户端会话.
// poll() ...
for(std::vector<struct pollfd>::reverse_iterator it = fds.rbegin(); it != fds.rend(); it++) {
if (it->fd == server_sock) {
struct pollfd newFd;
newFd.fd = newClient;
newFd.events = POLLIN;
fds.push_back(newFd);
} else {
// do something.
}
}
Run Code Online (Sandbox Code Playgroud)
但是当存在1或2或4个向量的元素时,reverse_iterator无法正常工作.我不明白为什么这项工作.
附上示例代码.
typedef struct tt_a {
int a;
short b;
short c;
} t_a;
vector<t_a> vec;
for (int i = 0; i < 1; i++) {
t_a t;
t.a = i;
t.b = i;
t.c = …Run Code Online (Sandbox Code Playgroud)