我怎么能用C++中的另一个子字符串替换字符串中的子字符串,我可以使用哪些函数?
eg: string test = "abc def abc def";
test.replace("abc", "hij").replace("def", "klm"); //replace occurrence of abc and def with other substring
Run Code Online (Sandbox Code Playgroud) 我正在使用队列来在线程之间进行通信.我有一个读者和多个编写器线程.我的问题是,每当我从队列中使用push/front/pop进行读取时,我是否需要锁定队列?我可以做以下事情:
//reader threads
getLock();
get the number of elements from the queue
releaseLock();
int i = 0;
while( i < numOfElements){
queue.front();
queue.pop();
i++
}
Run Code Online (Sandbox Code Playgroud)
我的想法是,我希望减少锁定代码的粒度,因为编写器线程只会写入队列的后面,并且只有一个读取器线程.只要我得到的元素个数,然后我能得到从队列中的元素或者我需要封闭front()
,并pop()
在锁呢?
我花了一些时间来调试一个给出分段错误的程序.这个bug是非常不确定和间歇性的,这很烦人.我把它缩小到strtok的召唤.我怀疑strtok的调用是在两个不同的线程中分割字符串导致分段错误.我可以在两个不同的线程中调用strtok吗?
谢谢.
我有一个unordered_map向量,它根据我定义的比较器函数进行排序.我想使用二进制搜索来使用比较器函数查找其中一个值.但是,二进制搜索只返回bool,我需要结果的索引/迭代器.我能做什么?
我正在测试std :: async函数,代码来自http://www.justsoftwaresolutions.co.uk/threading/multithreading-in-c++0x-part-8-futures-and-promises.html
int calculate_the_answer_to_LtUaE(){
sleep(5);
cout << "Aaa" << endl;
}
std::future<int> the_answer=std::async(calculate_the_answer_to_LtUaE);
the_answer.get();
cout << "finish calling" << endl;
sleep(10000);
Run Code Online (Sandbox Code Playgroud)
我需要调用the_answer.get()来调用calculate_the_answer_to_LtUaE()并在屏幕上打印Aaa.如果我注释掉了the_answer.get()行,我就不会打印任何内容.这是std :: async函数的预期行为还是我在这里做错了什么?这是因为我认为the_answer.get()用于等待函数完成并检索结果.
谢谢.
我可以使用哪些免费工具来测试Linux中C++代码的性能?基本上我想确定代码的瓶颈并提高性能.我的应用程序主要涉及使用来自网络的数据的计算代码.所以我想提高代码的执行速度.
谢谢.
我在STL队列推送中遇到了一个我不太了解的行为。
基本上,我有两个结构
structA{
string a;
}
structB{
char b[256];
}
structA st1;
structB st2;
...assign a 256 characters string to both st1 and st2...
queue<structA> q1;
queue<structB> q2;
for(int i=0 ; i< 10000; i++){
q1.push(st1);
}
for(int i=0 ; i< 10000; i++){
q2.push(st2);
}
Run Code Online (Sandbox Code Playgroud)
我意识到,与字符串结构相比,使用char结构的队列在推入结构时将花费更长的时间(例如5倍)。通过检查单个推动,我发现该结构的推动性能到处都有很多尖峰(从2倍到10倍)。是什么原因呢?
谢谢。
我在Linux中用C++编写代码.我已经处理了ctrl C信号,这样我就可以在退出时清理所有资源.但是,当我运行gdb时,我遇到了问题.Ctrl C也是gdb命令的停止.因此,如何将ctrl C发送到我的程序,以便我可以测试我的书面资源清理代码?
谢谢.
我有一个性能关键代码.类和对象相当大,因此,它将作为指针存储在STL容器中.当指向对象的指针需要基于某些逻辑存储在多个不同的容器中时出现问题.处理对象的所有权非常麻烦,因为我无法将对象的所有权隔离到单个容器(我可以从单个容器中删除).除了使用智能指针(因为它是性能关键和智能指针可能会影响性能),我该怎么办?
谢谢.