关于vector与pthread_create的线程函数的一些思考

相关文献:
面试题(55)|STL(5):vector删除指定值的元素
vector复杂对象传参与拷贝构造和赋值函数
面试题(48)|STL(3):使用过哪些容器,底层如何实现的?

定义vector和数组使用宏

#define MAXTHREADS 200
vector<string> m_vec(MAXTHREADS)

报错:

C2059: 语法错误:“常数”
未找到m_vec的函数定义

但是如果定义数组,则可以通过:

#define MAXTHREADS 200
string vec[MAXTHREADS];

C++中类的成员函数作为 pthread_create的线程函数

C++中类的成员函数作为 pthread_create的线程函数

pthread_create的线程函数内部访问数组或vector

vector报错

类成员函数作为函数参数出现error C3867:非标准语法;请使用“&”来创建指向成员的指针



class T{
    vector<string> m_vector(200);
}
static void* threadfun(void* pra)
{
    pthis->m_vector[0];
}

报错:

error C3867:非标准语法;请使用“&”来创建指向成员的指针 pthis->m_vector[0]

vector定义在类外面,pthread_create的线程函数直接访问vector

报错:

Link失败,无法识别vector

vector<string> m_vec(200);
class T{
    
}
static void* threadfun(void* param)
{
    string tmp="rdm";
    m_vec[id]=m_vec[id]+tmp;
}


### vector =操作 内部会有内存拷贝吗?


© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片