我正在观看C++中的系统错误处理 - Andrei Alexandrescu他声称这Exceptions in C++非常非常慢.
我想知道这是否仍然适用 C++98
在C++函数中,return用throw?替换是一个好习惯吗?例如,我有以下代码
// return indices of two numbers whose sum is equal to target
vector<int> twoSum(vector<int>& nums, int target) {
for(int i=0; i<nums.size()-1; ++i)
for(int j=i+1; j<nums.size(); ++j)
{
if(nums[i] + nums[j] == target) return vector<int>{i, j};
}
// return vector<int>{};
throw "no solution";
}
Run Code Online (Sandbox Code Playgroud)
上面的代码用我的GCC 7.2编译.
反正有没有做过这样的事情?
(correct pointer datatype) returnPointer(void* ptr, int depth)
{
if(depth == 8)
return (uint8*)ptr;
else if (depth == 16)
return (uint16*)ptr;
else
return (uint32*)ptr;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
我试图在c ++中创建一个函数,我想知道我是否可以创建它,以便它能够返回不同类型的向量.例如,基于不同的情况,它返回矢量字符串,int,double或......任何东西.在c ++中有可能吗?(我不想使用具有不同arg(S)和不同返回的重载函数)我对C++很新,我的问题可能看起来很愚蠢.
这是我的一段代码:
//零在这里意味着交集
std::vector<??????> findZeros(const mesh::Region& s, char *model) const
{
//Point
if( model == "point" )
{
std::vector<Vertex> zeros;
for(Region::pointIterator it = s.beginPoint(); itv != s.endPoint(); ++itv )
{
if( abs(Val(*it)) < 1.e-12 )
zeros.push_back(*it);
}
std::vector<point> zerosP(zeros.begin(), zeros.end());
return zerosP;
}
//line
else if (EntityS == "line")
{
std::vector<line> zerosE;
std::vector<Point&> PointE;
for(Region::lineIterator ite = s.beginLine(); ite != s.endLine(); ++ite )
{
Line ed = *ite;
Point P0 = ed.point(0);
Point P1 = e.point(1);
if( ......... …Run Code Online (Sandbox Code Playgroud)