我有一个顶点如dic = {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'n':6, 'm':7, 'g':8},我有两列如下表示顶点之间的关系:
a a
b d
e f
c f
n f
m g
Run Code Online (Sandbox Code Playgroud)
我想通过边将第一列中的每个顶点与第二列中的对应顶点相关联.所以a用a是代表一个循环.b同d是罚款.e,c和n他们共享同一个顶点f.而是说e有f,c有f,并n用f我们可以说e,c并n用f.
我有关于vector中for_each的问题,代码如下:
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct myclass {
void operator() (int i) {cout << " " << i;}
} myobject;
int main () {
vector<int> myvector(3,4);
cout << "\nmyvector contains:";
for_each (myvector.begin(), myvector.end(), myobject);
cout << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
应该for_each()的第三个参数是函数名吗?如果我们传递结构的名称,这是如何工作的?
我的问题,在最后一段,需要(在我看来)一些解释性设置.基本上,我想知道你是否可以避免使用模板而不是你创建所有你想成为的模板类而是从一个声明你将要使用的虚方法的基类继承,其中包括一个内存分配函数,当实现时,将返回指向派生(非基础)类型的指针.
C++似乎没有"通用基类"的概念,一切都是隐式派生的; 我想这个类定义如下:
class universal_base
{
};
Run Code Online (Sandbox Code Playgroud)
当然,现在我已经定义了它,我可以让我的所有类都来自它.然后,由于多态性,universal_base我传递的任何引用或指针将与模板参数基本相同:
template <typename T>
class C
{
T &x;
int f(T &y);
C(T &z): x(z + 1) {}
};
class C
{
universal_base &x;
int f(universal_base &y);
C(universal_base &z): x(z + 1) {}
};
Run Code Online (Sandbox Code Playgroud)
不同之处在于,在第一种结构中,表达式z + 1不能保证有效; 你只需告诉用户T必须超载operator+.在第二个结构中,我可以添加一个虚拟的运算符universal_base:
// in universal_base
public:
virtual universal_base& operator+(const universal_base &x) = 0;
Run Code Online (Sandbox Code Playgroud)
并使用typeid和dynamic_cast在实现中使争论正确.这样,编写格式错误的代码是不可能的,因为如果你没有实现,编译器会抱怨operator+.
当然,这样就无法声明非引用类型的成员:
class C: public universal_base
{ …Run Code Online (Sandbox Code Playgroud) 我想将给定时间转换为纪元(time_t),反之亦然.任何人都可以告诉这个例程或算法是什么?
谢谢
更新
epoch_strt.tm_sec = 0;
epoch_strt.tm_min = 0;
epoch_strt.tm_hour = 0;
epoch_strt.tm_mday = 1;
epoch_strt.tm_mon = 1;
epoch_strt.tm_year = 70;
epoch_strt.tm_isdst = -1;
double nsecs = difftime(curtime, basetime);//current time from system, I converrting it to struct tm
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,这总是返回32399.
我正在使用向量,在某些时候会有NULL条目; 我想擦除给定向量中的所有NULL出现.到目前为止我的方法不起作用:
for(int i = sent_flit_list->size() - 1; i >= 0; i--)
if(sent_flit_list[i] == NULL)
sent_flit_list->erase(sent_flit_list[i]);
for(int i = sent_pkt_list->size() - 1; i >= 0; i--)
if(sent_pkt_list[i] == NULL)
sent_pkt_list->erase(sent_pkt_list[i]);
Run Code Online (Sandbox Code Playgroud)
哪里
vector<Flit*> *sent_flit_list;
vector<Packet*> *sent_pkt_list;
Run Code Online (Sandbox Code Playgroud)
是向量.我已经尝试转换为类型(Flit*)NULL /(Flit*)0但没有成功.
任何帮助将不胜感激.
我们正在开发一款游戏,数百万客户与我们的服务器进行通信.这些游戏大部分都是回合制的.我知道UDP提供了一些优于TCP的性能优势,但我想知道一个协议是否比其他协议具有安全优势?我已经阅读了一些网站,表明TCP通常会更安全,但我已经看到了大量利用TCP漏洞的攻击.
我们的代码非常容忍不可靠的连接和丢失/无序数据,这就是我想到UDP的原因.谢谢!
你有浮动数据类型的bitset容器吗?例:
bitset<sizeof(float)*sizeof(char)> second(5.5f);
cout << second.to_string() << endl;
Run Code Online (Sandbox Code Playgroud)
它无法正常工作.我想要做的是获得位代表.
说我有以下课程:
class A
{
public:
A() {
}
A(int a):_a(a){
}
int _a;
};
Run Code Online (Sandbox Code Playgroud)
并具有以下功能:
void someFunc (A a)
{
cout << a._a;
}
Run Code Online (Sandbox Code Playgroud)
所以程序中的以下行正常工作:
someFunc (5); // Calls A(int a) Constructor.
Run Code Online (Sandbox Code Playgroud)
但以下不是:
someFunc(); //Compile error
Run Code Online (Sandbox Code Playgroud)
可以预期,如果它在获取整数时可以构建A,为什么不使用默认构造函数构建一个,当没有参数调用时?
通过引用捕获异常时,我得到的唯一好处是避免使用异常对象的副本?基本上是区别
try
{
CString a_csSQL = _T("SELECT * FROM Library");
CDatabase aDB;
aDB.OpenEx(g_csConnectionStringWdDSN,CDatabase::noOdbcDialog));
aDB.ExecuteSQL(a_csSQL);
}
catch(CDBException *& ex)
{
ex->Delete();
}
Run Code Online (Sandbox Code Playgroud)
和
try
{
CString a_csSQL = _T("SELECT * FROM Library");
CDatabase aDB;
aDB.OpenEx(g_csConnectionStringWdDSN,CDatabase::noOdbcDialog))
aDB.ExecuteSQL(a_csSQL);
}
catch(CDBException * ex)
{
ex->Delete();
}
Run Code Online (Sandbox Code Playgroud)