小编Dr.*_*ana的帖子

std :: vector <T> :: clear()调用内容的析构函数吗?

如果我有一个std :: vector的东西(比方说,std :: vector :: clear()会调用内容的析构函数吗?例如,如果我有一个数据作为向量,下面的代码是否有效?

char * pd;
for(vector<char *>::iterator it = data.begin(); it != data.end(); ++it) {
  pd = *it;
  delete pd;
}
Run Code Online (Sandbox Code Playgroud)

或者,它是多余的,因为data.clear()会这样做?我认为不是,即需要手动重新分配内容.我认为,data.clear()不会为内容调用隐式析构函数?这是对的吗?这适用于预C++ 11.

c++ vector

17
推荐指数
3
解决办法
3万
查看次数

用于Oracle数据库访问的线程安全的全局sqlca结构

我有一个使用Oracle Pro C预编译器的多线程(posix线程或基于pthread)的C应用程序.该应用程序使用全局sqlca结构.在一个.c文件中,它包含用于Oracle数据库访问的全局sqlca结构定义:

   #include <sqlca.h>
Run Code Online (Sandbox Code Playgroud)

在所有其他的c文件中,它使用如下:

   #define SQLCA_STORAGE_CLASS extern
   #include <sqlca.h>
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果多个线程试图访问数据库表进行查询,插入或更新并使用全局sqlca对象,我如何保证互斥或使其成为线程安全访问?另外,当我查询vs插入/更新时,他们都使用sqlca结构吗?

c oracle multithreading global-variables thread-safety

6
推荐指数
1
解决办法
180
查看次数

使用python输入重定向

我有以下程序来测试Python中的输入重定向.

a = int(raw_input("Enter a number: "))
b = raw_input("Enter a string: ")
print "number entered = ", a
print "string entered = ", b
Run Code Online (Sandbox Code Playgroud)

如果我在没有重定向的情况下运行该程序,输入和输出如下所示:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered =  sample
Run Code Online (Sandbox Code Playgroud)

现在,为了测试输入重定向,我有一个名为a.txt的文件包含:

100
sample
Run Code Online (Sandbox Code Playgroud)

但是,当我使用从a.txt重定向的输入(如下所示)运行时,我的输入和输出会出现乱码.

python doubt02.py < a.txt
Enter a number: Enter a string: number entered =  100
string entered =  sample
Run Code Online (Sandbox Code Playgroud)

请建议我是否有更好的选择(使用输入重定向),如下所示:

Enter a number: 100
Enter a string: sample
number entered =  100
string entered = …
Run Code Online (Sandbox Code Playgroud)

python input io-redirection

6
推荐指数
1
解决办法
3499
查看次数

在并行运行中使用gcov进行代码覆盖

我使用gcov为项目中的几个文件设置了C / C ++代码覆盖率。可执行文件正在并行运行。这导致一些共享的代码并行运行。

我正在损坏的.da文件或大小为零的.da文件。并行运行是否有问题?

因为两个或多个可执行实例正尝试在同一个.da文件中写入内容,以便为执行中的每个语句写入覆盖率计数?

如果是这样,是否有任何解决方法?

使用的Gcov版本是1.5

c++ parallel-processing gcov

5
推荐指数
2
解决办法
2300
查看次数

struct tm 中 tm_isdst 字段的解释

时间结构 (struct tm) 包含分解为各个组成部分的日历日期和时间。该结构包含 9 个 int 类型的成员(任意顺序),它们是:

Member  Type    Meaning Range
tm_sec  int seconds after the minute    0-61*
tm_min  int minutes after the hour  0-59
tm_hour int hours since midnight    0-23
tm_mday int day of the month    1-31
tm_mon  int months since January    0-11
tm_year int years since 1900    
tm_wday int days since Sunday   0-6
tm_yday int days since January 1    0-365
tm_isdst    int Daylight Saving Time flag
Run Code Online (Sandbox Code Playgroud)

如果夏令时有效,则夏令时标志 (tm_isdst) 大于零;如果夏令时无效,则夏令时标志 (tm_isdst) 为零;如果信息不可用,则夏令时标志 (tm_isdst) 小于零。

我与 tm_isdst 相关的具体问题如下:

  1. 对于日期(YYYY-MM-DD) …

c date

5
推荐指数
1
解决办法
8804
查看次数

在C++ 11中,来自priorC++ 11的std :: vector :: begin()是否等同于std :: vector :: data()?

std::vector::begin()从先前C++11等效到std::vector::data()C++ 11?我问这个的原因,早于C++ 11,我曾经把std :: vector :: begin()当作指针,但是在C++ 11之后,它不是,我不能转换为等效的指针.那么,我可以在C++ 11之后使用data()吗?

c++ vector c++11

5
推荐指数
1
解决办法
453
查看次数

将向量迭代器转换为指针

我有一个矢量std :: vector.我想迭代向量找到匹配,如果找到想要返回指向元素的指针,如下所示:

const int * findint(std::vector <int> &v, int a)
{
        std::vector<int>::const_iterator i1,i2;
        i1 = v.begin();
        i2 = v.end();
        for(;i1 != i2;++i1) {
                if(a== *i1) {
                        return(i1);
                }
        }
        return(0);
}
Run Code Online (Sandbox Code Playgroud)

这是使用GNU g ++ 2.95.3编译器进行编译和工作正常但不能使用GNU g ++ 4.9.2进行编译并给出以下错误:

error: cannot convert 'std::vector<GenFld>::const_iterator {aka __gnu_cxx::__normal_iterator<const int*, std::vector<int> >}' to 'const int*' in return
     [exec]     return(i1);
Run Code Online (Sandbox Code Playgroud)

需要帮忙.

c++ pointers iterator vector c++11

5
推荐指数
1
解决办法
1万
查看次数

用于GNU/G ++ 4.9的C++ 11中的string_char_traits <char>(早于2.95.3)

我有一些遗留的C++代码(用于使用GNU g ++ 2.95.3进行编译)具有以下声明 std::basic_string<char,string_char_traits<char>,malloc_alloc> x; 头文件是

#include <std/bastring.h>
Run Code Online (Sandbox Code Playgroud)

现在,我迁移到GU G ++ 4.9在那里我得到这个错误:1,std/bastring.h未发现2.当我改变的#include <std/bastring.h>因为#include <string>,我发现了以下错误:

error: 'string_char_traits' was not declared in this scope
std::basic_string<char,string_char_traits<char>,malloc_alloc> x;
error: template argument 2 is invalid
std::basic_string<char,string_char_traits<char>,malloc_alloc> x;
error: expected unqualified-id before ',' token
std::basic_string<char,string_char_traits<char>,malloc_alloc> x;
                                              ^
Run Code Online (Sandbox Code Playgroud)

在GNU g ++ 4.9下需要指导/帮助才能使这个可编辑

c++ string g++ c++11 g++4.9

5
推荐指数
1
解决办法
195
查看次数

根据条件在同一个表上使用 Oracle MERGE

我创建了一个 Oracle 序列,如下所示:

CREATE SEQUENCE TASK_ID_SEQ START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;  
Run Code Online (Sandbox Code Playgroud)

我有一个数据库表TASK如下:

TASK_ID nextval from TASK_ID_SEQ
TASK_DATE   SYSDATE
TASK_TYPE   <value fed from data>
Run Code Online (Sandbox Code Playgroud)

TASK如果中的日期TASK_TYPE尚未出现在表中,我需要插入一条新记录,否则忽略它。TASKTASK_DATE

下面的语法正确吗?

MERGE INTO TASK a
USING (SELECT b.task_date FROM TASK b) 
ON (a.task_type = b.task_type)
WHEN NOT MATCHED THEN
[INSERT INTO TASK]
Run Code Online (Sandbox Code Playgroud)

或者应该是这样:

MERGE INTO TASK a
USING (SELECT b.task_date FROM TASK b) 
ON (a.task_type = b.task_type)
WHEN MATCHED THEN
[]
WHEN MATCHED THEN
[INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

sql oracle upsert oracle11g sql-merge

5
推荐指数
1
解决办法
7836
查看次数

如何在 Windows 上测试运行 Memurai

我已经在我的 Windows 10 64 位系统上安装了Memurai。Memurai 是在 Windows 上运行的与 Redis 兼容的内存缓存和持久数据存储。我按照安装步骤中给出的步骤操作。Memurai 可以在初始设置期间作为 Windows 服务安装,或者稍后使用命令行选项安装。如何在 Windows 上使用 Memurai 创建一些基本应用程序来品尝水。我可以编写一些简单的 Java 应用程序来将 Memurai 用作 set-get 存储并测试其他功能吗?需要一些指导和指点。

与作为客户端的Redis工作的Jedis类似,是否有任何这样的客户端API可用于作为独立服务器作为单个实例进行测试,或者通过一些连接池或连接集群,其中每个集群可能有一个或多个连接池来做负载平衡? 一些示例代码、教程将有助于使用 Java。

java windows redis jedis memurai

5
推荐指数
1
解决办法
1736
查看次数