我有一些看起来像这样的代码:
template <class T>
T foo(T a) {
if (a) {
// do somethin', returns object of type T
} else {
return NULL;
}
}
Run Code Online (Sandbox Code Playgroud)
但当然它不会编译,因为NULL不是T类型.有人向我建议这个解决方案,但我不喜欢它:
template <class T>
T* foo(T a) {
if (a) {
// do somethin', returns object of type T*
} else {
return nullptr;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道如何在没有使用指针的情况下使该函数能够返回NULL值?
我想打印一些东西:
>>> print "%02i,%02i,%02g" % (3, 4, 5.66)
03,04,5.66
Run Code Online (Sandbox Code Playgroud)
但这不正确.如果你注意到,零被正确地预先设置为所有整数浮点(前两个数字).我需要它,如果小数点左边有一个数字,将有一个前导零.
即上面的解决方案应该返回:
03,04,05.66
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
我班上有一个成员变量:
class Foo
{
// ...
private:
boost::posix_time::ptime t;
}
Run Code Online (Sandbox Code Playgroud)
我想在构造函数中将其初始化为一个众所周知的值,这样我就知道程序尚未设置它:
Foo::Foo()
: t(NULL) // doesnt work
{}
Run Code Online (Sandbox Code Playgroud)
但是将其设置为NULL无效,因为它不是指针。
如何初始化boost::posix_time::ptime为众所周知的值?
我给出以下格式的字符串:"a{1;4:6}"和"a{1;2}b{2:4}"其中;代表两个不同的号码,和:代表数字的序列.支架内可以有任意数量的分号和冒号组合.
我想扩展它,这些是扩展上面两个例子的结果:
"a{1;4:6}" ="a1a4a5a6""a{1;2}b{2:4}" = "a1b2b3b4a2b2b3b4"我以前从来没有处理这样的事情,因为我通常是在某种现成的格式是简单的可分解给出的字符串.在这种情况下,我必须手动解析字符串.
我的尝试是一遍又一遍地手动拆分字符串,直到遇到冒号或分号的情况,然后从那里开始构建字符串.这非常低效,我希望对这种方法有任何想法.这基本上是代码的样子(我省略了很多,只是为了更快地得到点):
>>> s = "a{1;4:6}"
>>> splitted = s.split("}")
>>> splitted
['a{1;4:6', '']
>>> splitted2 = [s.split("{") for s in splitted]
>>> splitted2
[['a', '1;4:6'], ['']]
>>> splitted3 = [s.split(";") for s in splitted2[0]]
>>> splitted3
[['a'], ['1', '4:6']]
# ... etc, then build up the strings manually once the ranges are figured out.
Run Code Online (Sandbox Code Playgroud)
最初在闭合支撑处分裂的想法是保证在它之后出现具有相关范围的新标识符.我哪里错了?我的方法适用于简单的字符串,例如第一个示例,但它不适用于第二个示例.此外,效率低下.我会感谢任何关于这个问题的意见.
我对以下 C++ 向量交换代码有一个简单的问题:
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
class Base
{
private:
std::vector<int> vec;
public:
Base(std::vector<int> v) : vec(v) {}
std::vector<int> getVec() {
return vec;
}
void setVec(std::vector<int> vec) {
this->vec = vec;
}
void printVec() {
for (auto &v : vec) {
std::cout << v << std::endl;
}
}
void swap(Base b) {
std::vector<int> tmp = vec;
vec = b.getVec();
b.setVec(tmp);
}
};
int main()
{
std::vector<int> v1 = {1, 2, 3, 4};
std::vector<int> v2 …Run Code Online (Sandbox Code Playgroud) 我有一个元组列表(num,id):
l = [(1000, 1), (2000, 2), (5000, 3)]
Run Code Online (Sandbox Code Playgroud)
每个元组的第二个元素包含标识符.假设我要删除带有id的元组,2我该怎么做?
即我想要新列表: l = [(1000,1), (5000, 3)]
我试过l.remove(2)但它不起作用.