小编The*_*red的帖子

如何遍历多图并打印按键分组的值?

我有std::multimap<string, MyObject*> dataMap;密钥的位置MyObject.name,所有MyObjects都存储在一个std::vector<MyObject>.

在填充地图后,我需要打印dataMap由相同键分组的内容,其中我首先需要相同键的数量,dataMap.count(MyObject.name)然后使用此键的所有值.

我正在考虑使用两个for loops,其中第一个循环遍历"密钥组名称"并计算属于该组的所有密钥,另一个for loop循环遍历特定组中的所有密钥并打印MyObject.information

for(//iterate through group key names){
   //print number of key occurences
   for(//iterate through a certain group{
      //print MyObject.information for all the keys in a group
   }

}
Run Code Online (Sandbox Code Playgroud)

问题是,我真的不知道如何实现这个,或者我将如何使用迭代器来实现我的意愿.有任何想法吗?

编辑:从提供的链接我创建了这个

 for(std::multimap<string, MyObject*>::const_iterator itUnq = dataMap.cbegin();
     itUnq != dataMap.cend(); itUnq = dataMap.upper_bound(itUnq->first)){

        std::cout << dataMap.count(itUnq->second->name)
                  << std::endl;

        std::pair <std::multimap<string, MyObject*>::const_iterator, 
                   std::multimap<string, MyObject*>::const_iterator> groupRange;
        groupRange = dataMap.equal_range(itUnq->second->code);

        //iterate through keys inside the …
Run Code Online (Sandbox Code Playgroud)

c++ key count multimap

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

如何在C中使用等待

我该怎么用wait?它让我感到困惑不已.我fork是一个带递归的触发树,现在孩子们必须暂停(等待/睡眠),而我运行pstree,这样我就可以打印proc树了.

我应该用吗?

int status;
wait(&status);
Run Code Online (Sandbox Code Playgroud)

更确切地说

wait(NULL)
Run Code Online (Sandbox Code Playgroud)

我应该把它放在哪里?在父母if(pid > 0)或孩子if(pid==0)?也许在ifs的末尾,所以我将所有pids 存储在数组中然后运行for它们并使用wait?

我的代码模板:

void ProcRec(int index)
{
     pid_t pid;
     int noChild = getNChild(index);

     int i= 0;
     for(i = 0; i < noChild; i++)
     { 
          pid = fork();

        if (pid > 0)
        {
            /* parent process */
        }
        else if (pid == 0)
        {
            /* child process. */
            createProc(index+1);
        }
        else
        {
            /* error */
            exit(EXIT_FAILURE);
        }
    }

    if(getpid() == …
Run Code Online (Sandbox Code Playgroud)

c wait

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

#include标头在哪里?

我查找了头文件示例,但只能找到没有要包含的简单文件.

所以我的问题是我#include喜欢stringvector哪里一样?在.h或.cpp文件中?或者两者兼而有之?

c++ header include libraries

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

谷歌测试缺少DSO

我正在学习谷歌测试.我下载了gtest,运行了命令./configure,make并以#结尾

$ sudo cp -a include/gtest /usr/include
$ sudo cp -a lib/.libs/* /usr/lib/
Run Code Online (Sandbox Code Playgroud)

我从这里得到了这一切.我试着运行这段代码

#include <gtest/gtest.h>
TEST(MathTest, TwoPlusTwoEqualsFour) {
    EXPECT_EQ(2 + 2, 4);
}

int main(int argc, char **argv) {
    ::testing::InitGoogleTest( &argc, argv );
    return RUN_ALL_TESTS();
}
Run Code Online (Sandbox Code Playgroud)

像这样

 $ export GTEST_HOME=~/usr/gtest
 $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
 $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp
Run Code Online (Sandbox Code Playgroud)

但我收到一个错误

/usr/bin/ld: /tmp/ccVTj3Rk.o: undefined reference to symbol '_ZN7testing8internal9EqFailureEPKcS2_RKSsS4_b'
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libgtest.so: error adding symbols: DSO missing from command line
collect2: error: ld …
Run Code Online (Sandbox Code Playgroud)

c++ googletest

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

使用googletest测试受保护的成员

googletesting时我对继承感到困惑.我有一个class Aprotected属性.如果我想访问那些我必须扩展该类,但同时我还需要扩展public ::testing::Test为唯一的目的gtest.

这个问题最优雅的解决方案是什么?我也试图避免#define protected public

c++ testing inheritance protected googletest

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

dup2()在C中做了什么

我在手册页中查了一下,但我仍然没有得到它......

让我们说你有dup2(f1,0).是否用stdin切换filedesc.1然后锁定stdin?

c pipe file-descriptor dup2

4
推荐指数
1
解决办法
9549
查看次数

我应该在构造函数中调用成员函数

我知道这是一个相当简单的问题,也取决于代码的其余部分,但我对经验法则更感兴趣.

那么在什么情况下在构造函数中调用函数是合适的呢?

什么是优选的:

ClassA obj1;
obj1.memFun();
Run Code Online (Sandbox Code Playgroud)

要么

ClassA obj1;
//where constructor of ClassA is
ClassA::ClassA(){ memFun(); }
Run Code Online (Sandbox Code Playgroud)

c++ constructor function member

3
推荐指数
1
解决办法
1463
查看次数

删除指向矢量的指针

我有const std::vector<double> *vecPtr一个班级.我想正确地释放内存,那么我应该destructor怎么样?

我试过了~ClassA() { delete[] vecPtr; },但是我收到了一个错误

*** Error in `./test': free(): invalid pointer: 0x00007fff8c643a98 ***
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)

请问delete[]如果矢量充满指针才起作用?

编辑:

我用vecPtr这样的:vecPtr = &vec;

如果我使用delete我得到*** Error in ./test': double free or corruption (fasttop): 0x00000000008fcb20 ***

c++ pointers vector delete-operator

3
推荐指数
2
解决办法
5698
查看次数

在 googletest 中访问受保护的变量

我有这个类 testC 用于谷歌测试

class testC : public A { };
Run Code Online (Sandbox Code Playgroud)

然后是同一文件中的一堆测试。

TEST(test_case_name, test_name) {
 ... test body ...
}
Run Code Online (Sandbox Code Playgroud)

A的结构是这样的

class A{

protected:
   B b;
public:
   //constructors
   //destructor
   //member functions
Run Code Online (Sandbox Code Playgroud)

问:如何通过访问b所有功能?TEST(){}testC

我尝试做一个吸气剂testC

public:
  testC getTest(){
      testC test;
      return test;
  }
Run Code Online (Sandbox Code Playgroud)

我也尝试返回参考,但没有运气......

c++ protected googletest

2
推荐指数
1
解决办法
3325
查看次数

同时将多个十六进制数附加到QByteArray

我有一堆十六进制数字,但我不想这样做

QByteArray ba;
ba.append(0x01);
ba.append(0x02);
ba.append(0x7A);
...
Run Code Online (Sandbox Code Playgroud)

我可以一行吗?也许是QString操纵?

我通过串行通信发送消息QExtSerialPort,我需要在QByteArray中存储Hex命令,以便我可以使用qint64 write(const QByteArray &data)

c++ qt hex qbytearray

2
推荐指数
1
解决办法
3678
查看次数

返回向量(返回类型)

我距离最终掌握指针和参考的完整用途和概念(或者我希望如此)只有一步之遥,所以我需要你的帮助来清楚地解决问题.

我有一个包含一个对象的private成员向量ClassA,所以vector<myObj> vec.

我应该使用什么样的getter ClassA来返回vec所以我可以打印内容而myObj无需冗余分配内存?我需要通过returnvec reference,常规return vec,甚至指向vec

c++ return reference vector object

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