Beispiel #1
0
int pstring_t<F>::pcmp(const pstring_t &right) const
{
	std::size_t l = std::min(blen(), right.blen());
	if (l == 0)
	{
		if (blen() == 0 && right.blen() == 0)
			return 0;
		else if (right.blen() == 0)
			return 1;
		else
			return -1;
	}
	auto si = this->begin();
	auto ri = right.begin();
	while (si != this->end() && *si == *ri)
	{
		ri++;
		si++;
	}
	int ret = (si == this->end() ? 0 : *si - *ri);
	if (ret == 0)
	{
		if (this->blen() > right.blen())
			ret = 1;
		else if (this->blen() < right.blen())
			ret = -1;
	}
	return ret;
}
Beispiel #2
0
typename pstring_t<F>::iterator pstring_t<F>::find(const pstring_t search, iterator start) const
{
	for (; start != end(); ++start)
	{
		iterator itc(start);
		auto cmp = search.begin();
		while (itc != end() && cmp != search.end() && *itc == *cmp)
		{
			++itc;
			++cmp;
		}
		if (cmp == search.end())
			return start;
	}
	return end();
}