gpt4 book ai didi

C++ 带括号的取消引用(带迭代器)

转载 作者:太空狗 更新时间:2023-10-29 20:58:20 24 4
gpt4 key购买 nike

我的问题很简单。我有一个值 vector (这里是线程,无关紧要),我想遍历它们。但是,有两个版本的代码对我来说看起来相同,但只有第二个版本有效。我想知道为什么。

版本 1 (不编译)

int main(){
int someValue = 5;
vector<std::thread *> threadVector;

threadVector.resize(20);

for (int i = 0; i < 20; i++) {
threadVector[i] = new std::thread(foo, std::ref(someValue));
}

for (std::vector<std::thread *>::iterator it = threadVector.begin(); it != threadVector.end(); ++it) {
*it->join(); // *********Notice this Line*********
}

system("pause"); // I know I shouldn't be using this
}

版本 2 (有效)

int main(){
int someValue = 5;
vector<std::thread *> threadVector;

threadVector.resize(20);

for (int i = 0; i < 20; i++) {
threadVector[i] = new std::thread(foo, std::ref(someValue));
}

for (std::vector<std::thread *>::iterator it = threadVector.begin(); it != threadVector.end(); ++it) {
(*it)->join(); // *********Notice this Line*********
}

system("pause"); // I know I shouldn't be using this
}

最佳答案

这是操作顺序的问题。

*it->join();

解析为:

*(it->join());

关于C++ 带括号的取消引用(带迭代器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27880656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com