From fcf50e1eafee305e3f0bd34064f988a2ac8f5e5d Mon Sep 17 00:00:00 2001 From: wangzhengquan <wangzhengquan85@126.com> Date: 星期一, 24 八月 2020 16:32:40 +0800 Subject: [PATCH] modify iterator --- test/test_right_walk3 | 0 test/test_right_walk3.c | 2 +- algorithm/IndirectAlg.c | 11 +++++++---- test/test_right_walk | 0 Make.defines.linux | 2 +- 5 files changed, 9 insertions(+), 6 deletions(-) diff --git a/Make.defines.linux b/Make.defines.linux index d8c4263..60bde91 100755 --- a/Make.defines.linux +++ b/Make.defines.linux @@ -9,7 +9,7 @@ LDFLAGS= -CFLAGS = $(INCLUDE) -I. -I./include -I$(ROOT)/common -std=c++11 -mcx16 -Wall -DLINUX -D_GNU_SOURCE $(EXTRA) +CFLAGS = $(INCLUDE) -I. -I./include -I$(ROOT)/common -I$(ROOT)/common/include -g -std=c++11 -mcx16 -Wall -DLINUX -D_GNU_SOURCE $(EXTRA) ifeq ($(pic),y) CFLAGS += -fPIC diff --git a/algorithm/IndirectAlg.c b/algorithm/IndirectAlg.c index 69640eb..f9a3d51 100644 --- a/algorithm/IndirectAlg.c +++ b/algorithm/IndirectAlg.c @@ -81,18 +81,21 @@ while (!mterminate.load()) { std::this_thread::sleep_for(std::chrono::seconds(this->keepTime * 2)); //sleep(this->keepTime); - for(iter = statusMap.begin(); iter != statusMap.end(); iter++) { + for(iter = statusMap.begin(); iter != statusMap.end();) { status = iter->second; if (status != nullptr) { // cout<< "iter " << iter->first <<' '<< iter->second << status->lastTime << endl; // printf("%ld, %ld, %ld\n", time(NULL), status->lastTime, (time(0) - status->lastTime)); - if(difftime(time(NULL), status->lastTime) > this->keepTime*2) { + if(difftime(time(NULL), status->lastTime) > this->keepTime * 2) { std::cout << status->id << "鑴辩鐩戞帶鍖�, remove from map\n"; delete status; - statusMap.erase(iter); - } + + iter = statusMap.erase(iter); + continue; + } } + iter++; } } diff --git a/test/test_right_walk b/test/test_right_walk index bf4aa5a..6ce46f0 100755 --- a/test/test_right_walk +++ b/test/test_right_walk Binary files differ diff --git a/test/test_right_walk3 b/test/test_right_walk3 index 9f0a3eb..245a40d 100755 --- a/test/test_right_walk3 +++ b/test/test_right_walk3 Binary files differ diff --git a/test/test_right_walk3.c b/test/test_right_walk3.c index 31ca7ff..9b97b1c 100644 --- a/test/test_right_walk3.c +++ b/test/test_right_walk3.c @@ -94,7 +94,7 @@ void test3() { - std::ifstream fin("test2.txt"); + std::ifstream fin("test3.txt"); char line[1024]; //std::string line; char *targetIdStr; -- Gitblit v1.8.0