#include <iostream>
#include <string>//std::string loves to allocate memory on the heap.
#include <string_view> //c++17.
static uint32_t s_AllocCount = 0;
void* operator new(size_t size)
{
s_AllocCount++;
std::cout << "Allocating " << size << " bytes, " << s_AllocCount << " allocations\n";
return malloc(size);
}
#define STRING_VIEW 1
#if STRING_VIEW
void PrintName(std::string_view name)
{
std::cout << name << std::endl;
}
#else
void PrintName(const std::string& name)
{
std::cout << name << std::endl;
}
#endif
int main(void)
{
#define STRING 0
#if STRING
std::string name = "Groot Cute";
#else
const char* name = "Groot Cute";
#endif
#if STRING_VIEW && STRING
std::string_view firstName(name.c_str(), 5);
std::string_view lastName(name.c_str() + 6, 4); //1 allocations
#elif STRING_VIEW && STRING == 0
std::string_view firstName(name, 5);
std::string_view lastName(name + 6, 4);
#elif STRING_VIEW == 0 && STRING
std::string firstName = name.substr(0, 5);
std::string lastName = name.substr(6, 4);
#endif
PrintName(firstName);
PrintName(lastName);
std::cin.get();
}
【Cherno的C++视频】How to make your strings faster in C++
最新推荐文章于 2023-12-01 23:51:30 发布