no message
parent
12e30ddea4
commit
be55c4218d
|
@ -17,7 +17,6 @@ elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Intel")
|
||||||
# using Intel C++
|
# using Intel C++
|
||||||
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
|
||||||
add_compile_options("/std:c++17")
|
|
||||||
# using Visual Studio C++
|
# using Visual Studio C++
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace Loger{
|
||||||
public:
|
public:
|
||||||
_C_Loger(FILE *p);
|
_C_Loger(FILE *p);
|
||||||
_C_Loger(string path);
|
_C_Loger(string path);
|
||||||
|
#define DEBUG_FILE_POSITION __FILE__,__LINE__
|
||||||
int Debug(string,string,int);
|
int Debug(string,string,int);
|
||||||
int Log();
|
int Log();
|
||||||
int LogFile();
|
int LogFile();
|
||||||
|
|
|
@ -75,6 +75,7 @@ int selectsort(T *data,uint64_t len,CompareHanlder<T> handle){
|
||||||
data[i] = tmp;
|
data[i] = tmp;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void swap(T *a1,T *a2){
|
void swap(T *a1,T *a2){
|
||||||
T tmp = *a1;
|
T tmp = *a1;
|
||||||
|
|
|
@ -0,0 +1,85 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-07-23 23:39:57
|
||||||
|
* @LastEditTime: 2021-07-25 02:31:24
|
||||||
|
* @LastEditors: your name
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: \generallib\general\src\function\daemon.c
|
||||||
|
*/
|
||||||
|
#include "daemon.h"
|
||||||
|
|
||||||
|
BOOL SetProcessPrivilege(char *lpName, BOOL opt)
|
||||||
|
{
|
||||||
|
HANDLE tokenhandle;
|
||||||
|
TOKEN_PRIVILEGES NewState;
|
||||||
|
|
||||||
|
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tokenhandle))
|
||||||
|
{
|
||||||
|
LookupPrivilegeValue(NULL, lpName, &NewState.Privileges[0].Luid);
|
||||||
|
NewState.PrivilegeCount = 1;
|
||||||
|
NewState.Privileges[0].Attributes = opt != 0 ? 2 : 0;
|
||||||
|
AdjustTokenPrivileges(tokenhandle, FALSE, &NewState, sizeof(NewState), NULL, NULL);
|
||||||
|
CloseHandle(tokenhandle);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int RangeProcess()
|
||||||
|
{
|
||||||
|
DWORD Proc_pid[1024], Retn_bytes, Proc_count, Retn_bytes2;
|
||||||
|
unsigned int i;
|
||||||
|
HMODULE hMod[1024];
|
||||||
|
HANDLE hProcess;
|
||||||
|
char szModName[MAX_PATH];
|
||||||
|
if (EnumProcesses(Proc_pid, sizeof(Proc_pid), &Retn_bytes))
|
||||||
|
{
|
||||||
|
Proc_count = Retn_bytes / sizeof(DWORD);
|
||||||
|
SetProcessPrivilege("SeDebugPrivilege", 1);
|
||||||
|
for (i = 0; i < Proc_count; i++)
|
||||||
|
{
|
||||||
|
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Proc_pid[i]);
|
||||||
|
if (hProcess != NULL)
|
||||||
|
{
|
||||||
|
EnumProcessModules(hProcess, hMod, sizeof(hMod), &Retn_bytes2);
|
||||||
|
GetModuleFileNameEx(hProcess, hMod[0], szModName, sizeof(szModName));
|
||||||
|
printf("PID=%d Path=%s\n", Proc_pid[i], szModName);
|
||||||
|
}
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
SetProcessPrivilege("SeDebugPrivilege", 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int test_fork()
|
||||||
|
{
|
||||||
|
char szCommandLine[] = "D:\\game\\The Legend of Zelda Breath of the Wild\\cemu\\cemu.exe";
|
||||||
|
STARTUPINFO si = {sizeof(si)};
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
si.dwFlags = STARTF_USESHOWWINDOW; //指定wShowWindow成员有效
|
||||||
|
si.wShowWindow = TRUE; //此成员设为TRUE的话则显示新建进程的主窗口
|
||||||
|
BOOL bRet = CreateProcess(
|
||||||
|
NULL, //不在此指定可执行文件的文件名
|
||||||
|
szCommandLine, //命令行参数
|
||||||
|
NULL, //默认进程安全性
|
||||||
|
NULL, //默认进程安全性
|
||||||
|
FALSE, //指定当前进程内句柄不可以被子进程继承
|
||||||
|
CREATE_NEW_CONSOLE, //为新进程创建一个新的控制台窗口
|
||||||
|
NULL, //使用本进程的环境变量
|
||||||
|
NULL, //使用本进程的驱动器和目录
|
||||||
|
&si,
|
||||||
|
&pi);
|
||||||
|
if (bRet)
|
||||||
|
{
|
||||||
|
//不使用的句柄最好关掉
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
printf("new process id %d\n", pi.dwProcessId);
|
||||||
|
printf("new thread id %d\n", pi.dwThreadId);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-07-23 23:40:36
|
||||||
|
* @LastEditTime: 2021-07-25 02:31:09
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edi
|
||||||
|
* @FilePath: \generallib\general\src\function\daemon.h
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if __cplusplus >= 201103L
|
||||||
|
#pragma message("编译器支持c++11")
|
||||||
|
#endif
|
||||||
|
#include <list>
|
||||||
|
#include<iostream>
|
||||||
|
#include <algorithm>
|
||||||
|
using namespace std;
|
||||||
|
extern "C"{
|
||||||
|
#include<stdio.h>
|
||||||
|
#include <time.h>
|
||||||
|
}
|
||||||
|
#include <windows.h>
|
||||||
|
#include <Tlhelp32.h>
|
||||||
|
#include <psapi.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "PackageReceiver.h"
|
#include "package_receiver.h"
|
||||||
|
|
||||||
PackageReceiver::PackageReceiver()
|
PackageReceiver::PackageReceiver()
|
||||||
{
|
{
|
|
@ -2,7 +2,7 @@
|
||||||
// Created by 29019 on 2020/4/18.
|
// Created by 29019 on 2020/4/18.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "TcpClient.h"
|
#include "tcp_client.h"
|
||||||
|
|
||||||
void conn_writecb(struct bufferevent *, void *);
|
void conn_writecb(struct bufferevent *, void *);
|
||||||
void conn_readcb(struct bufferevent *, void *);
|
void conn_readcb(struct bufferevent *, void *);
|
|
@ -1,3 +1,11 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-06-12 14:42:28
|
||||||
|
* @LastEditTime: 2021-07-24 00:47:43
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: \generallib\general\src\net\tcp_client.h
|
||||||
|
*/
|
||||||
//
|
//
|
||||||
// Created by 29019 on 2020/4/18.
|
// Created by 29019 on 2020/4/18.
|
||||||
//
|
//
|
||||||
|
@ -9,13 +17,14 @@
|
||||||
#define _WIN32_WINNT 0x0500
|
#define _WIN32_WINNT 0x0500
|
||||||
#endif
|
#endif
|
||||||
#ifdef linux
|
#ifdef linux
|
||||||
#include<sys/types.h>
|
#include <sys/types.h>
|
||||||
#include<sys/socket.h>
|
#include <sys/socket.h>
|
||||||
#include<arpa/inet.h>
|
#include <arpa/inet.h>
|
||||||
#define EVENT__HAVE_PTHREADS
|
#define EVENT__HAVE_PTHREADS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
extern "C"{
|
extern "C"
|
||||||
|
{
|
||||||
#include "third/include/event2/bufferevent.h"
|
#include "third/include/event2/bufferevent.h"
|
||||||
#include "third/include/event2/buffer.h"
|
#include "third/include/event2/buffer.h"
|
||||||
#include "third/include/event2/listener.h"
|
#include "third/include/event2/listener.h"
|
||||||
|
@ -25,29 +34,33 @@ extern "C"{
|
||||||
};
|
};
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "PackageReceiver.h"
|
#include "package_receiver.h"
|
||||||
#include <mutex>
|
#include <mutex>
|
||||||
#include <thread>
|
#include <thread>
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
|
||||||
class TcpClientLibevent {
|
class TcpClientLibevent
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
typedef enum {
|
typedef enum
|
||||||
UNCONNECTED, // 未连接
|
{
|
||||||
CONNECTED, //已经连接
|
UNCONNECTED, // 未连接
|
||||||
FAIL, // 连接失败
|
CONNECTED, //已经连接
|
||||||
}Status;
|
FAIL, // 连接失败
|
||||||
class TcpClientObserver{
|
} Status;
|
||||||
|
class TcpClientObserver
|
||||||
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~TcpClientObserver(){return;}
|
virtual ~TcpClientObserver() { return; }
|
||||||
mutex mMux;
|
mutex mMux;
|
||||||
virtual void OnConnected() { return; };
|
virtual void OnConnected() { return; };
|
||||||
virtual void OnDisConnected() { return; };
|
virtual void OnDisConnected() { return; };
|
||||||
virtual void OnData(uint8_t *dat,uint64_t len){return;};
|
virtual void OnData(uint8_t *dat, uint64_t len) { return; };
|
||||||
virtual void OnClose(){return;};
|
virtual void OnClose() { return; };
|
||||||
};
|
};
|
||||||
TcpClientLibevent(std::string addrinfo,int port, TcpClientObserver *p);
|
TcpClientLibevent(std::string addrinfo, int port, TcpClientObserver *p);
|
||||||
~TcpClientLibevent(){
|
~TcpClientLibevent()
|
||||||
|
{
|
||||||
event_base_free(mBase);
|
event_base_free(mBase);
|
||||||
};
|
};
|
||||||
int ConnectServer();
|
int ConnectServer();
|
||||||
|
@ -55,15 +68,16 @@ public:
|
||||||
int Dispatch();
|
int Dispatch();
|
||||||
int OnTCPPackage(uint8_t *, uint16_t);
|
int OnTCPPackage(uint8_t *, uint16_t);
|
||||||
int SetReconnect(bool);
|
int SetReconnect(bool);
|
||||||
int SetObserver(TcpClientObserver*);
|
int SetObserver(TcpClientObserver *);
|
||||||
int Close();
|
int Close();
|
||||||
Status mStatus;
|
Status mStatus;
|
||||||
TcpClientObserver *mObserver;
|
TcpClientObserver *mObserver;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool mReConnect = false;
|
bool mReConnect = false;
|
||||||
int sendData(void*,size_t);
|
int sendData(void *, size_t);
|
||||||
struct event_base *mBase;
|
struct event_base *mBase;
|
||||||
struct bufferevent* bev;
|
struct bufferevent *bev;
|
||||||
struct sockaddr_in mSrv;
|
struct sockaddr_in mSrv;
|
||||||
std::thread *mThread;
|
std::thread *mThread;
|
||||||
mutex mLock;
|
mutex mLock;
|
|
@ -1,3 +1,11 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-10-11 17:37:54
|
||||||
|
* @LastEditTime: 2021-07-24 00:46:47
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: \generallib\general\src\utils.cpp
|
||||||
|
*/
|
||||||
//
|
//
|
||||||
// Created by 29019 on 2019/5/2.
|
// Created by 29019 on 2019/5/2.
|
||||||
//
|
//
|
||||||
|
@ -39,17 +47,17 @@ inline ENV_SYS CurrentEnvSys() {
|
||||||
return ENV_LINUX;
|
return ENV_LINUX;
|
||||||
#endif
|
#endif
|
||||||
#ifdef _WINDOWS
|
#ifdef _WINDOWS
|
||||||
return ENV_WINDOWS
|
|
||||||
#endif
|
|
||||||
#ifdef _UNIX
|
|
||||||
return ENV_UNIX
|
|
||||||
#endif
|
|
||||||
#ifdef _WIN32
|
|
||||||
return ENV_WINDOWS;
|
return ENV_WINDOWS;
|
||||||
#endif
|
#endif
|
||||||
#if !defined(linux) && defined(_WINDOWS)&&defined(_UNIX)&&defined(_WIN32)
|
#ifdef _UNIX
|
||||||
|
return ENV_UNIX
|
||||||
|
#endif
|
||||||
|
#ifdef _WIN32
|
||||||
|
return ENV_WINDOWS;
|
||||||
|
#endif
|
||||||
|
#if !defined(linux) && defined(_WINDOWS) && defined(_UNIX) && defined(_WIN32)
|
||||||
return ENV_NONE;
|
return ENV_NONE;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
inline ENV_COMPILER CurrentEnvCompiler()
|
inline ENV_COMPILER CurrentEnvCompiler()
|
||||||
|
|
|
@ -4,15 +4,13 @@ add_definitions(-std=c++11)
|
||||||
|
|
||||||
message("current dir" ${CMAKE_CURRENT_SOURCE_DIR})
|
message("current dir" ${CMAKE_CURRENT_SOURCE_DIR})
|
||||||
# set(CMAKE_CXX_FLAGS "-fno-elide-constructors")
|
# set(CMAKE_CXX_FLAGS "-fno-elide-constructors")
|
||||||
aux_source_directory(. SOURCE)
|
|
||||||
message(info ${SOURCE})
|
message(info ${SOURCE})
|
||||||
link_directories("./third/jsoncpp/lib/")
|
link_directories("./third/jsoncpp/lib/")
|
||||||
link_directories("../../../obj/")
|
link_directories("../../../obj/")
|
||||||
|
|
||||||
link_libraries(jsoncpp)
|
|
||||||
link_libraries(generallib)
|
link_libraries(generallib)
|
||||||
|
|
||||||
add_executable(cpp11 ${SOURCE} )
|
add_executable(cpp11 cpp11_test.cpp )
|
||||||
include_directories("./third/jsoncpp/include/pkgsrc/include/json")
|
include_directories("./third/jsoncpp/include/pkgsrc/include/json")
|
||||||
include_directories("../../../obj/inc/")
|
include_directories("../../../obj/inc/")
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,11 @@
|
||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2021-03-15 23:07:25
|
||||||
|
* @LastEditTime: 2021-07-24 23:19:57
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: \cpp11\cpp11_test.cpp
|
||||||
|
*/
|
||||||
#if __cplusplus >= 201103L
|
#if __cplusplus >= 201103L
|
||||||
#pragma message("编译器支持c++11")
|
#pragma message("编译器支持c++11")
|
||||||
#endif
|
#endif
|
||||||
|
@ -13,9 +21,89 @@ extern "C"{
|
||||||
#include<stdio.h>
|
#include<stdio.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
}
|
}
|
||||||
|
#include <windows.h>
|
||||||
|
#include <Tlhelp32.h>
|
||||||
#include "loger.h"
|
#include "loger.h"
|
||||||
|
#include <psapi.h>
|
||||||
|
|
||||||
int main(){
|
BOOL SetProcessPrivilege(char *lpName, BOOL opt)
|
||||||
|
{
|
||||||
|
HANDLE tokenhandle;
|
||||||
|
TOKEN_PRIVILEGES NewState;
|
||||||
|
|
||||||
|
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &tokenhandle))
|
||||||
|
{
|
||||||
|
LookupPrivilegeValue(NULL, lpName, &NewState.Privileges[0].Luid);
|
||||||
|
NewState.PrivilegeCount = 1;
|
||||||
|
NewState.Privileges[0].Attributes = opt != 0 ? 2 : 0;
|
||||||
|
AdjustTokenPrivileges(tokenhandle, FALSE, &NewState, sizeof(NewState), NULL, NULL);
|
||||||
|
CloseHandle(tokenhandle);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int RangeProcess()
|
||||||
|
{
|
||||||
|
DWORD Proc_pid[1024], Retn_bytes, Proc_count, Retn_bytes2;
|
||||||
|
unsigned int i;
|
||||||
|
HMODULE hMod[1024];
|
||||||
|
HANDLE hProcess;
|
||||||
|
char szModName[MAX_PATH];
|
||||||
|
if (EnumProcesses(Proc_pid, sizeof(Proc_pid), &Retn_bytes))
|
||||||
|
{
|
||||||
|
Proc_count = Retn_bytes / sizeof(DWORD);
|
||||||
|
SetProcessPrivilege("SeDebugPrivilege", 1);
|
||||||
|
for (i = 0; i < Proc_count; i++)
|
||||||
|
{
|
||||||
|
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, Proc_pid[i]);
|
||||||
|
if (hProcess != NULL)
|
||||||
|
{
|
||||||
|
EnumProcessModules(hProcess, hMod, sizeof(hMod), &Retn_bytes2);
|
||||||
|
GetModuleFileNameEx(hProcess, hMod[0], szModName, sizeof(szModName));
|
||||||
|
printf("PID=%d Path=%s\n", Proc_pid[i], szModName);
|
||||||
|
}
|
||||||
|
CloseHandle(hProcess);
|
||||||
|
}
|
||||||
|
SetProcessPrivilege("SeDebugPrivilege", 0);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int test_fork()
|
||||||
|
{
|
||||||
|
char szCommandLine[] = "D:\\game\\The Legend of Zelda Breath of the Wild\\cemu\\cemu.exe";
|
||||||
|
STARTUPINFO si = {sizeof(si)};
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
si.dwFlags = STARTF_USESHOWWINDOW; //指定wShowWindow成员有效
|
||||||
|
si.wShowWindow = TRUE; //此成员设为TRUE的话则显示新建进程的主窗口
|
||||||
|
BOOL bRet = CreateProcess(
|
||||||
|
NULL, //不在此指定可执行文件的文件名
|
||||||
|
szCommandLine, //命令行参数
|
||||||
|
NULL, //默认进程安全性
|
||||||
|
NULL, //默认进程安全性
|
||||||
|
FALSE, //指定当前进程内句柄不可以被子进程继承
|
||||||
|
CREATE_NEW_CONSOLE, //为新进程创建一个新的控制台窗口
|
||||||
|
NULL, //使用本进程的环境变量
|
||||||
|
NULL, //使用本进程的驱动器和目录
|
||||||
|
&si,
|
||||||
|
&pi);
|
||||||
|
if (bRet)
|
||||||
|
{
|
||||||
|
//不使用的句柄最好关掉
|
||||||
|
CloseHandle(pi.hThread);
|
||||||
|
CloseHandle(pi.hProcess);
|
||||||
|
printf("new process id %d\n", pi.dwProcessId);
|
||||||
|
printf("new thread id %d\n", pi.dwThreadId);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
// std::cout<<"test start"<<endl;
|
// std::cout<<"test start"<<endl;
|
||||||
// try{
|
// try{
|
||||||
// std::cout<<"cpu count is "<<CoreCount()<<std::endl;
|
// std::cout<<"cpu count is "<<CoreCount()<<std::endl;
|
||||||
|
@ -23,28 +111,36 @@ int main(){
|
||||||
// }catch( std::exception e){
|
// }catch( std::exception e){
|
||||||
// std::cout<<"exception"<<e.what();
|
// std::cout<<"exception"<<e.what();
|
||||||
// }
|
// }
|
||||||
std::list<int> i;
|
test_fork();
|
||||||
i.insert(i.begin(),2);
|
while (true)
|
||||||
i.insert(i.begin(),3);
|
{
|
||||||
i.insert(i.begin(),4);
|
RangeProcess();
|
||||||
i.insert(i.begin(),5);
|
Sleep(1000);
|
||||||
i.insert(i.begin(),6);
|
|
||||||
|
|
||||||
list<int>::iterator pos = (find(i.begin(), i.end(), 4));
|
|
||||||
i.insert(pos,1);
|
|
||||||
|
|
||||||
auto begin = i.begin();
|
|
||||||
while(*begin != 4)
|
|
||||||
begin++;
|
|
||||||
|
|
||||||
i.erase(begin);
|
|
||||||
|
|
||||||
for(auto x : i){
|
|
||||||
std::cout<<x<<"\r\n"<<std::endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Loger::Loger loger("d://");
|
// std::list<int>
|
||||||
loger.Debug("测试测试",DEBUG_FILE_POSITION);
|
// i;
|
||||||
std::cout<<"line " << __FILE__<<__LINE__<<" "<<__FUNCTION__<<std::endl;
|
// i.insert(i.begin(),2);
|
||||||
|
// i.insert(i.begin(),3);
|
||||||
|
// i.insert(i.begin(),4);
|
||||||
|
// i.insert(i.begin(),5);
|
||||||
|
// i.insert(i.begin(),6);
|
||||||
|
|
||||||
|
// list<int>::iterator pos = (find(i.begin(), i.end(), 4));
|
||||||
|
// i.insert(pos,1);
|
||||||
|
|
||||||
|
// auto begin = i.begin();
|
||||||
|
// while(*begin != 4)
|
||||||
|
// begin++;
|
||||||
|
|
||||||
|
// i.erase(begin);
|
||||||
|
|
||||||
|
// for(auto x : i){
|
||||||
|
// std::cout<<x<<"\r\n"<<std::endl;
|
||||||
|
// }
|
||||||
|
|
||||||
|
// Loger::Loger loger("d://");
|
||||||
|
// loger.Debug("测试测试",DEBUG_FILE_POSITION);
|
||||||
|
// std::cout<<"line " << __FILE__<<__LINE__<<" "<<__FUNCTION__<<std::endl;
|
||||||
// TestRingBuffer();
|
// TestRingBuffer();
|
||||||
}
|
}
|
||||||
|
|
|
@ -139,6 +139,7 @@ int TestRValue()
|
||||||
v.push_back(std::move(str));
|
v.push_back(std::move(str));
|
||||||
std::cout << "After move, str is \"" << str << "\"\n";
|
std::cout << "After move, str is \"" << str << "\"\n";
|
||||||
std::cout << "The contents of the vector are \"" << v[0];
|
std::cout << "The contents of the vector are \"" << v[0];
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int global = 0;
|
int global = 0;
|
||||||
|
@ -191,5 +192,6 @@ int TestThreadPool()
|
||||||
double dr_ms = std::chrono::duration<double,std::milli>(t2-t1).count();
|
double dr_ms = std::chrono::duration<double,std::milli>(t2-t1).count();
|
||||||
std::cout<<"count is "<<dr_ms<<std::endl;
|
std::cout<<"count is "<<dr_ms<<std::endl;
|
||||||
getchar();
|
getchar();
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue