c_cpp C ++的序列容器类,其作用类似于可以连接的字符串,但适用于任何类型。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp C ++的序列容器类,其作用类似于可以连接的字符串,但适用于任何类型。相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <exception>
#include <string>
#include <cstddef>
#include <algorithm>
#include <cstdarg>
typedef std::size_t size_t;
class SequenceException : public std::exception
{
private:
std::string _msg;
public:
SequenceException(const char* message) : _msg(message)
{}
~SequenceException(){}
const char* what() const throw ()
{
return _msg.c_str();
}
};
template<class T>
class Sequence
{
private:
T* _array;
size_t _size;
public:
Sequence(size_t cap) : _array(new T[cap]), _size(cap)
{}
Sequence(size_t cap, size_t arg_c, ...): _array(new T[cap]), _size(cap)
{
va_list args;
va_start(args, arg_c);
size_t i;
for(i=0; i< arg_c; i++)
{
_array[i] = va_arg(args, T);
}
va_end(args);
}
~Sequence()
{
delete[] _array;
}
//overloads getitem operator for get and set
T& operator[] (const int index) const
{
if(index < _size)
{
return _array[index];
}
else
{
throw SequenceException("index larger than size of sequence.");
}
}
T* begin() const
{
return _array;
}
T* at(size_t index) const
{
return _array + index;
}
T* end() const
{
return _array + _size;
}
size_t size() const
{
return _size;
}
friend Sequence<T> operator+ (const Sequence<T>& a, const Sequence<T>& b)
{
Sequence<T> newseq(a._size + b._size);
std::copy(a.begin(), a.end(), newseq.begin());
std::copy(b.begin(), b.end(), newseq.at(a._size));
return newseq;
}
friend Sequence<T>& operator+= (Sequence<T>& a, const Sequence<T>& b)
{
a._size += b._size;
std::copy(b.begin(), b.end(), a.at(b._size));
return *a;
}
};
int main() {
Sequence<char> arr(3);
arr[0] = '3';
arr[1] = 'g';
arr[2] = 'g';
Sequence<char> brr(3);
brr[0] = '4';
brr[1] = 'h';
brr[2] = 'h';
Sequence<char> crr = arr + brr;
std::cout << crr[3] << std::endl;
Sequence<int> int_cont(5, 2, 6, 6);
std::cout << int_cont[1] << std::endl;
}
以上是关于c_cpp C ++的序列容器类,其作用类似于可以连接的字符串,但适用于任何类型。的主要内容,如果未能解决你的问题,请参考以下文章
序列式容器------vector类模板
EFIUEFIMBRGPT的区别
类StringBuilder
从类中加载配置,使其行为类似于属性
pandas基础
string基本字符序列容器(竞赛时常用的使用方法总结)