• 函数重载:
    • 传size_t 传iterator会执行不同的函数体
    • 传char 传string会执行不同的函数体
  • 默认参数:参数数量是可变的

==> 函数调用的方式千奇百怪

  • size_t:unsigned_int
  • string::npos:-1
  • iterator:s.begin(), s.end(),

如何阅读cpp文档
image.png
dev-c++中的声明
image.png


s.begin(),s.end()

const_iterator begin() const noexcept;
const_iterator end() const noexcept;

  • c++中的创建迭代器,相当于c中的创建指针

substr()

string substr (size_t pos = 0, size_t len = npos) const;

  • s.substr(a, b):pos = a, len = b
  • s.substr(a):pos = a, len = npos
  • 返回s从pos开始,长度为len的子串
  • 如果pos > s.size(),就会抛出out_of_range的异常
    • image.png
  • O(len)

find()

返回查找元素第一次第一个位置 ,未找到则返回string::npos(-1)
size_t find (const string& str, size_t pos = 0) const noexcept;

  • 从pos开始查找,返回第一次找到str的位置
  • 如果没有找到,就返回string::npos(-1)
  • O(s1.size() * s2.size())

size_t find (char c, size_t pos = 0) const noexcept;

  • 从pos开始查找,返回第一次找到c的位置
  • 如果没有找到,就返回string::npos(-1)
  • O(s1.size())

clear()

  • O(1)

insert()

string& insert (size_t pos, const string& str);

  • 从pos开始插入str
  • O(s.size())

void insert (iterator p, InputIterator first, InputIterator last);

  • 在p位置插入str[first:last]
  • O(s.size())

erase()

iterator erase (const_iterator p);

  • O(s.size())

string& erase (size_t pos = 0, size_t len = npos);
iterator erase (const_iterator first, const_iterator last);

  • O(s.size())

replace():不好用