C++学习笔记(四十七):c++ 字符串优化

本节介绍c++字符串优化的相关知识。c++中string对性能的影响比较大,因为string的很多操作都需要重新分配内存,进而影响程序性能。

接下来通过代码来展示优化的小技巧

#include 
#include 

static int m_times = 0;

//重写new操作符,用来统计分配内存的次数
void* operator new(size_t size)
{
	m_times++;
	return malloc(size);
}

int main() {
	std::string name = "pcop_learing";

	std::string s1 = name.substr(0, 4);

	std::cout << s1 << std::endl;
	std::cout << m_times << "\n";    //此种情况下分配两次,因为substr会创建一个新的string来完成

}

用string_view来替换substr,string_view是通过内存试图来操作,简单说就是还在在原来的内存进行操作,取指定内存位置的值。 string_view是c++17中的特性。

#include 
#include 

static int m_times = 0;

//重写new操作符,用来统计分配内存的次数
void* operator new(size_t size)
{
	m_times++;
	return malloc(size);
}

int main() {
	std::string name = "pcop_learing";

	std::string_view s1(name.c_str(), 4);

	std::cout << s1 << std::endl;
	std::cout << m_times << "\n";    //此种情况下分配1次,因为string_view是在原来name的内存空间完成

}

你可能感兴趣的:(c++学习笔记,c++,学习,笔记)