insert需要提交吗

昨晚我向数据库中一个表insert大量数据大约250m
分了90次insert ,并且没有提交,这样会占多大的undotbs吧?
insert需要每做一次都提交吗

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8135069/viewspace-136061/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/8135069/viewspace-136061/

<think>好的,用户的问题是关于map在插入时是否会覆盖已有键的值,具体是问使用insert方法是否会覆盖。我需要结合提供的引用资料来解答这个问题。 首先,我需要回忆不同编程语言中map的实现可能不同。用户提供的引用中有提到Rust的HashMap和C++的std::map,所以需要分别说明这两种情况。 引用[2]中的例子是Rust的HashMap,当插入相同的键时,新值会覆盖旧值。比如插入"Blue"两次,第二次的值25会替换之前的10。这说明在Rust中,insert方法会覆盖已有的键值对。 而引用[3]是关于C++的std::map,其中使用了insert方法和operator[]。根据C++的标准,std::map的insert方法在插入已存在的键时,不会覆盖原有值,而是保留原来的值。而使用operator[](如mapTest[1] = "test1")则会覆盖已有的值。比如,如果键已存在,insert不会替换,但使用[]赋值会替换。 接下来需要验证这个结论是否正确。比如在C++中,当调用insert插入一个已存在的键,插入会失败,原来的值保持不变。而使用operator[]则会更新值。例如: std::map<int, std::string> m; m[1] = "old"; m.insert(std::make_pair(1, "new")); // 这里insert后,m[1]仍然是"old" 而如果使用m[1] = "new",则值会被替换。 因此,需要明确说明在C++中,insert不会覆盖,而[]会覆盖。而Rust的insert会覆盖。 用户的问题可能是在C++环境下,因为引用了std::map的代码示例。所以重点应放在C++的std::map上。 另外,用户提供的引用[1]中提到的是删除相同value的键值对,这可能与问题无关,但需要确认是否涉及覆盖的情况,但看起来主要是删除操作,可能与问题无关,可以暂时忽略。 所以总结回答的结构应该是: 1. 不同语言中的map行为不同,需分情况讨论。 2. 在C++的std::map中,insert方法不会覆盖已有键的值,而operator[]会覆盖。 3. 在Rust的HashMap中,insert方法会覆盖已有键的值。 4. 根据引用中的例子,具体说明两者的差异。 需要注意用户的问题中是否明确语言环境,但根据提供的引用,用户可能同时关心C++和Rust的情况,所以需要分别说明。同时,用户的问题可能主要针对C++,因为问题中的例子是std::map,但需要覆盖两种语言的情况。 最后,生成相关问题,如不同语言中map的插入行为差异,如何避免覆盖等。</think>在编程中,`map`容器插入键值对时是否覆盖已有键的值,取决于具体语言和实现方式。以下是不同语言下的行为分析: --- ### 一、C++的`std::map` 在C++中,`std::map`的`insert`方法**不会覆盖**已有键的值。若插入的键已存在,`insert`会保留原有值并返回插入失败的迭代器。而通过`operator[]`赋值则会直接覆盖原有值[^3]。 ```cpp std::map<int, std::string> m; m.insert({1, "old"}); // 插入键1 m.insert({1, "new"}); // 键1已存在,不会覆盖 std::cout << m[1]; // 输出: old m[1] = "new"; // 使用operator[],覆盖原有值 std::cout << m[1]; // 输出: new ``` --- ### 二、Rust的`HashMap` 在Rust中,`HashMap`的`insert`方法**会覆盖**已有键的值。无论键是否存在,新值都会替换旧值[^2]。 ```rust use std::collections::HashMap; let mut scores = HashMap::new(); scores.insert("Blue", 10); // 插入键"Blue" scores.insert("Blue", 25); // 覆盖原有值 println!("{:?}", scores); // 输出: {"Blue": 25} ``` --- ### 三、总结 1. **C++**:`insert`不覆盖,`operator[]`覆盖。 2. **Rust**:`insert`直接覆盖。 3. **其他语言**(如Python、Java):需查阅文档,例如Python的字典`dict`直接赋值会覆盖。 --- 相关问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值