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