由买买提看人间百态

topics

全部话题 - 话题: std
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)
m*******s
发帖数: 22
1
Hi,
I wrote a c program, complied and ran with linux g++. It is no problem with
first 26 runs, I mean, I got the output which I want exactly. However, an
error message is got in the 27th run, that is:
terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
Aborted
Anyone has an idea about how to solve this problem? Thanks a lot.
t****d
发帖数: 8
2
来自主题: Programming版 - std::string::reserve()
看到网上一个解释:
void reserve(uint res_arg = 0)
change the capacity of a String to the maximum of res_arg and size(). This
may be an increase or a decrease in the capacity.
这个对吗? 我做了个简单的测试,跟踪 i 的值,但是在reserve前后没有变化,哪位
指点一下,谢谢了。
std::string str1("abcdefgh");
int i=str1.size(); // 结果是8
i=str1.capacity(); // 结果是15
str1.reserve(4);
i=str1.capacity(); // 结果是15
i=str1.size(); // 结果是8
j****i
发帖数: 305
3
来自主题: Programming版 - macro and std:: function name clashing
I don't have access to the computer I was testing lapack. I can try what you
suggested and I think it might work, since
max has no "(" followed.
But what about the complex class in c++, which I cannot and do not want to
change. In that class the std::abs() function is used. There got to be a way
to solve this systematically.
m*******s
发帖数: 22
4
Hi,
I wrote a c program, complied and ran with linux g++. It is no problem with
first 26 runs, I mean, I got the output which I want exactly. However, an
error message is got in the 27th run, that is:
terminate called after throwing an instance of 'std::bad_alloc'
what(): St9bad_alloc
Aborted
Anyone has an idea about how to solve this problem? Thanks a lot.
h******6
发帖数: 5
5
来自主题: Programming版 - 问个 std::vector 的基本问题
下面的这段代码为什么会出错? 谢谢!
#include
#include
class Stack{
public:
Stack();
~Stack(){delete[] _buffer;}
private:
const int _capacity;
int _size;
int *_buffer;
Stack & operator = (const Stack& rhs );
};
Stack::Stack():_capacity(10), _size(0){
_buffer = new int[_capacity];
}
int main(){
std::vector stackArray(3);
}
z****e
发帖数: 2024
6
来自主题: Programming版 - 问个 std::vector 的基本问题
Stack(const Stack& s):_capacity(s._capacity), _size(s._size){
if(s._buffer){
_buffer=new int[_capacity];
std::copy(s._buffer, s._buffer+_capacity, _buffer);
}
else
_buffer=0;
};
p****o
发帖数: 1340
7
来自主题: Programming版 - 问个 std::vector 的基本问题
std::vector uses copy to initial the vector: basically the same Stack object
is copied three times to fill stackArray.
it is efficient for most cases, while failed here...
i*****e
发帖数: 113
8
来自主题: Programming版 - 问个 std::vector 的基本问题
这里有一个问题
如果自己copy自己的时候,内存就泄露了

Stack(const Stack& s):_capacity(s._capacity), _size(s._size){
if(s._buffer){
_buffer=new int[_capacity];
std::copy(s._buffer, s._buffer+_capacity, _buffer);
}
else
_buffer=0;
};
z****e
发帖数: 2024
9
来自主题: Programming版 - 多线程计时不准std::thread尝鲜 问题
为什么多线程计时的时候就不准了呢?
mywork是一个干活的类,里边对n1和n2分别进行计算,用cal1和cal2函数。
然后生成两个线程类,都引用同一个mywork,算cal1和cal2.
比较对象是一个普通函数f()。
我明明,用手表计时,发现多线程是快的,大概19秒左右完成,看任务管理器的cpu实用状态也大体符合20秒。
怎么用程序计时,就是这个输出了呢?太奇怪了,真着急。
output:
1000000000
33.84 seconds elapsed for multithreading.(这句话出现的时候,其实是20秒)
1000000000
27.82 seconds elapsed for one thread.
以下是源码。
#include
#include
#include
using namespace std;
const long long int M=5e8;
class mywork{
public:
mywork():n1(1),n2(1),flag1(0),flag2(0){}
void
z****e
发帖数: 2024
10
来自主题: Programming版 - 多线程计时不准std::thread尝鲜 问题
我目前用的是std::thread,
咋整?
p***o
发帖数: 1252
11

Second you. Moreover, typing something like std:: brings IntelliSense.
f*******y
发帖数: 988
12
现在流行直接写std::xyz
不要让你的东西污染标准空间
s****a
发帖数: 238
13
来自主题: Programming版 - 求助一个std::map的怪问题
我的程序里需要用到一个std::map的对象,其中l_set是我定义的一个类型
,为了能作为map的key为这个类型定义了<算符。但是后来发现有些情况下明明确定这
个map已经正确初始化了,其中有某个key,但是取出的值总是0,但大多数时候运行有
是正常的。
后来我遍历了这个map,发现它有两次遇到这个key,第一次对应的value是正确的,第
二次就变成0了,但显然在map不可能有两个同样的key。我觉得我的<应该没有问题(非
常简单),对map得实现由不是很清楚,所以现在束手无策,对stl比较熟的能不能给点
线索。
L*******s
发帖数: 63
14
来自主题: Programming版 - std::map 为什么没有排序呢
Cause C-Style strings (char*) are not compared by < or >.
Use std::string or any string classes that have those operator overloaded.
T********i
发帖数: 2416
15
说实话我觉得C++11过分了。这种东西完全不考虑体系结构。尤其在cloud上,或者其他
virtualization之上,可能runtime得到的configuration都是假的。以为用这东西能创
建纯非确定图灵机的都会死得很惨。
P.S.我主要是说std::future。
t****t
发帖数: 6806
16
没看法, 我觉得他说的跟用不用std::thread关系不大. 线程里的exception总是要分开
处理的.
N******K
发帖数: 10202
17
1G的运算结果 你不用std::move 用啥
r*********e
发帖数: 20
18
来自主题: Programming版 - std::string 是8 bit clean的吗?
最近遇到一个字符串处理的题,要求是必须保证8 bit clean,传进来的字符串是const
unsigned char*, 我想把它转成std::string 然后一个个字符来处理,请问这样做的
话还是8 bit clean吗?
h**********c
发帖数: 4120
19
std::vector 只放class ojects吧,还是和java 混了,
不能放primitive type
b***i
发帖数: 3043
20
看来是copy,因为move需要std::move
那么,如果这个类的成员变量是vector poles的话,poleManager本身是另一个
类生成的singleton实例的指针,那么它的内容应该在堆上,这样的话整个过程从
PoleAcess::Load那里是在栈上生成一个vector,最后需要move到堆上吗?当然如果移
动,也不是很大数据量,因为只是这个vector自己的数据,而不是整个内容。
RVO能否知道本来为了要放到堆上而优化?
L****8
发帖数: 3938
21
std::vector啥都能放 不过不要放bool
i***c
发帖数: 26
22
new std::vector(PoleAccess::Load(...)) 是 move construct,PoleAccess:
:Load的返回值没有名字,是rvalue
i********s
发帖数: 6
23
你把std::vector 想象成 int, 然后就会清楚为什么这个是没有问题的了。
详细的可看这里:https://stackoverflow.com/questions/22655059/why-it-is-ok-to
-return-vector-from-function
h**l
发帖数: 168
24
1 这样的话,是不是一开始有一个vector在栈上,然后为了返回堆上的指针,把内容复
制到了堆上?
yeah, just copy the container info from stack to heap.
2 这个new std::vector(Pole)是move constructor还是copy?
should be move as the method returns r-value.
3 但是为了把栈上的变量移动到堆上,还是得copy吧?当然,只是一个vector容器的信
息而已,真正vector内容都在堆上吧。而且,内容指向的Pole对象也都在堆上。
move constructor of the vector container is used, the container information
is copied from stack to heap, the vector elements (Pole*) are moved
4 这个过程RVO负责直接优化到堆上吗?我问这个问题是因为我需要把PoleAccess::
Load返回的每一个Pole对象... 阅读全帖

发帖数: 1
25

那你也只能这么做了,麻烦的就是ownership自己维护。
另外其实new一个vector看着也别扭,如果你用c++17的话,可以考虑把返回值改成std:
y**b
发帖数: 10166
26
来自主题: Programming版 - std::size_t的麻烦
std::size_t a=1, b=2;
a-b会得到无符号数的模-1,是个巨大无比的正数,
这类东西要是放在科学计算里面,
完全就是坑啊:
本来用size_t取代int定义一些自然条件和大数值更合理,
可是一旦两个size_t相减,控制条件就飞到九霄云外了,
等你费尽力气调试程序,却发现原来是这么一个荒谬的玩意。
多年前我就遇到过一次。
L****8
发帖数: 3938
27
来自主题: Programming版 - std::size_t的麻烦
看了一下 std::size_t 大致相当于 unsigned long long
我现在是自定义 int_max = long long
彻底不用 unsigned
d***a
发帖数: 13752
28
来自主题: Programming版 - std::size_t的麻烦
“难道就没有什么好办法?还有C++为什么不对a-b这种情况给予编译警告?”
这是C语言的问题,C++继承过来了。a-b越界是run-time出现的,编译器不能警告(除
非a-b是编译时可计算的常数表达式)。
效率高的解决方法有,可以写汇编语言,在每次a-b后检查CPU的carry flag,比用std:
:max快。但从编程效率来说,这不是什么好办法。
用int或unsigned int,从机器语言来说是一样的结果。比如说1-2,实际上是
0x00000001-0x00000002 = 0xFFFFFFFF,0xFFFFFFFF解释成int就是-1。

+
ab
发帖数: 37
29
来自主题: Unix版 - C++ std lib help?
I'm using gnu gcc.
But I found that no g++ std lib on line help!
Where can I got it?
Thank you
s*****r
发帖数: 59
30
来自主题: Business版 - mean/ std
there is statistics variable, which is mean/std, what name of it? the higher
the better or the lower the better? Thanks.
首页 上页 1 2 3 4 5 6 7 8 9 10 下页 末页 (共10页)