64,636
社区成员
发帖
与我相关
我的任务
分享
for( vector< str >::iterator i = vec.begin(); i != vec.end(); ) // 这里的i++要去掉
{
if( (*i).x == 1 )
{
i = vec.erase( i ); //为什么这样进不来?
}
else
{
++i;
}
}
#include "A.h"
#include <vector>
using namespace std;
typedef str arrStr[10];
int main(int argc, char** argv)
{
arrStr wc;
vector<str> vec;
for( int i = 0; i < 10; i++ )
{
wc[i].x = i; // 在这里初始化wc
vec.push_back(wc[i]); // 然后将初始化后的wc中的元素加入到vec
}
for( vector<str>::iterator i = vec.begin(); i != vec.end();) // 参考6楼的建议,这里把i++去掉
{
if( (*i).x == 1 )
{
i = vec.erase( i ); // 现在可以运行到这里了。erase后会返回vec中下一个元素对应的iterator
}
else
{
++i; // 如果没有erase操作,则说明内存没有变动,直接++就OK
}
}
}
在A.h里:
typedef struct ST
{
int x;
}str;
在B.cpp里:
typedef str arrStr[10]; // 不能这样typedef吧?
arrStr wc;